Android 保持小部件BroadcastReceiver处于活动状态,即使未从清单中实例化
我有一个小部件需要侦听BATTERY_CHANGED事件,但是,由于此事件受保护,无法从清单中声明,因此我从应用程序构造函数创建了一个新的BroadcastReceiver:Android 保持小部件BroadcastReceiver处于活动状态,即使未从清单中实例化,android,widget,broadcastreceiver,battery,intentfilter,Android,Widget,Broadcastreceiver,Battery,Intentfilter,我有一个小部件需要侦听BATTERY_CHANGED事件,但是,由于此事件受保护,无法从清单中声明,因此我从应用程序构造函数创建了一个新的BroadcastReceiver: public void onCreate() { super.onCreate(); if (DEBUG) Log.d(TAG, "onCreate()"); // Register receivers if (receiver == null) { rece
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的静态方法,该方法实际使用RemoteView更新小部件。直到一个小时过去,一切都正常工作,此后我的接收器消失,小部件不再更新。我正在用2.2.1固件的Droid上测试这个-
我做错了什么?这是更新小部件的正确方法吗?我只需要那个事件,所以如果不需要服务,我就不想要它。我是否应该使用AlarmManager来确保我的接收器仍在那里?我能做这个吗
谢谢。我不知道为什么你的接收器在一个小时后丢失了,但是用它定期检查它是否还在那里怎么样?如果它丢失了,你可以重新注册 我不知道为什么你的接收器在一个小时后丢失了,但是用它定期检查它是否还在那里怎么样?如果它丢失了,你可以重新注册 是的,这是我到目前为止为避免这种情况而实施的解决方案,但是我需要一个4-5分钟的计时器来完成这项工作,它不是很干净,因为即使小部件接收器仍然打开,它也会运行,我希望有更好的解决方案,无论如何,谢谢。是的,这是我到目前为止为避免这种情况而实施的解决方案,然而,我需要一个4-5分钟的计时器来完成这项工作,它不是那么干净,因为即使小部件接收器仍然打开,它也会运行,我希望有更好的解决方案,无论如何,谢谢。