我有一个需要监听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);
}
然后,从Receiver我调用AppWidgetProvider的静态方法,它实际上使用RemoteViews更新小部件。一切都完美无缺,直到1小时过去,之后我的接收器消失,小部件不再更新。我正在使用2.2.1固件的Droid进行测试 -
我做错了什么?这是更新窗口小部件的正确方法(我只需要该事件,因此如果不需要,我不想拥有服务)。我应该使用AlarmManager来确定我的接收器仍然存在吗?我可以这样做吗?
感谢。