即使没有从清单中实例化,也要保持小部件的broadcastreceiver
-
29-09-2019 - |
题
我有一个小部件,需要收听电池_changed事件,但是,由于此事件受到保护,并且无法从清单中声明我从应用程序构造函数中创建一个新的广播castreceiver:
public void onCreate() {
super.onCreate();
if (DEBUG) Log.d(TAG, "onCreate()");
// Register receivers
if (receiver == null) {
receiver = new MYReceiver(this);
}
// Create new intentfilter
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(receiver, intentFilter);
}
然后,从接收器中,我称之为AppWidgetProvider的静态方法,该方法实际使用远程视图更新了窗口小组。一切正常,直到过去1小时,我的接收器消失了,小部件不再更新。我正在使用2.2.1固件的机器人进行测试 -
我在做什么错?这是更新小部件的正确方法(我只需要该事件,所以如果不需要服务,我不想拥有服务)。我是否应该使用警报器来确定我的接收器仍在那里?我可以这样做吗?
谢谢。
解决方案
我不知道为什么您的接收者在一个小时后迷路了,但是使用 AlarmManager 定期检查是否还在吗?因此,如果丢失,您可以重新注册它。
不隶属于 StackOverflow