我有一个小部件,需要收听电池_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 定期检查是否还在吗?因此,如果丢失,您可以重新注册它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top