2

我有一个需要监听 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 来确保我的接收器还在吗?我可以这样做吗?

谢谢。

4

1 回答 1

0

我不知道为什么您的接收器在一小时后丢失了,但是使用AlarmManager定期检查它是否仍然存在呢?因此,如果它丢失了,您可以重新注册它。

于 2010-12-01T16:18:17.280 回答