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);
}

次に、Receiver から、RemoteViews を使用して実際にウィジェットを更新する AppWidgetProvider の静的メソッドを呼び出します。1 時間が経過するまではすべてが問題なく動作し、その後はレシーバーが消え、ウィジェットが更新されなくなります。2.2.1 ファームウェアを搭載した Droid でこれをテストしています。

私が間違っているのは何ですか?これはウィジェットを更新する正しい方法ですか (私はそのイベントが必要なだけなので、必要ない場合はサービスを提供したくありません)。受信機がまだそこにあることを時々確認するために、AlarmManager を使用する必要がありますか? 私はこれを行うことができますか?

ありがとう。

4

1 に答える 1

0

受信機が 1 時間後に失われた理由はわかりませんが、AlarmManagerを使用して、受信機がまだ存在するかどうかを定期的に確認するのはどうですか? そのため、紛失した場合でも再登録できます。

于 2010-12-01T16:18:17.280 に答える