一般に、私は常に6秒ごとにインテントをアクティビティに送信し、BroadcastReceiver
受信するたびにタイマーを更新するサービスを持っています。
偶然にも、しばらくすると (これはランダムです)、特定の受信機が機能しなくなることがわかりました。
OnPause
私unregister
はそれをonResume
再登録します。
また、これは任意のデバイスと Android バージョンでランダムに発生します。
Web で調査したところonReceive
、レシーバーが Android によって殺される準備ができた後、私のものはインテントを取得し続けていることがわかりました。
「レシーバーのライフサイクル
BroadcastReceiver オブジェクトは、onReceive(Context, Intent) への呼び出しの間のみ有効です。コードがこの関数から戻ると、システムはオブジェクトが終了し、アクティブではなくなったと見なします。"
参考までに、アクティビティ内でこのように宣言しました
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context arg0, Intent intent) {
Log.i("Intent received", "+_ " + intent.getAction());
if (intent.getAction().equals(TEST)) {
//do sth
} else {
//do sth else
}
}
}
時間をかけて読んでくれてありがとう:)。
私は自分のマニフェストに何も宣言しません。logcat に関しては、それが発生した瞬間に電話をしなければなりません。このサービスは、1 つの非同期タスクの後の単純な送信ブロードキャストです。私が行った最後のテストは、送信された beeing をログに記録することによって、サービスからのコードが実行されていることを確認することでした。そして、サービスは続けられました。
私は今コードを書くことから離れていますが、非常に単純なので仕方がないと思います。タナクス