我有一个需要监听 BATTERY_CHANGED 事件的小部件,但是,由于此事件受到保护并且无法从清单中声明,因此我从 Application 构造函数创建了一个新的 BroadcastReceiver:
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 的静态方法,该方法实际上使用 RemoteViews 更新小部件。一切都完美无瑕,直到 1 小时过去了,在那之后我的接收器消失了,小部件不再更新。我正在使用 2.2.1 固件的 Droid 上进行测试-
我做错了什么?这是更新小部件的正确方法吗(我只需要那个事件,所以如果不需要它我不想拥有服务)。我应该不时使用 AlarmManager 来确保我的接收器还在吗?我可以这样做吗?
谢谢。