1

BroadcastReceiver のドキュメントに次のように書かれています。

Activity.onResume() 実装でレシーバーを登録する場合は、Activity.onPause() で登録解除する必要があります。(一時停止するとインテントを受信しなくなり、不要なシステム オーバーヘッドが削減されます)。

サービス S1 が sendBroadcast を作成するときに A1 インターフェイスを更新する内部 BroadcastReceiver を持つアクティビティ A1 の例を作成しました。S1 が終了するまでに約 8 秒かかります。

A1 を実行し、A1 呼び出し onPause を行うためにホーム ボタンを押すと、「sendBroadcast からのインテントをまだ受け取ります」とインターフェイスが更新されます。
ありがとう

4

1 に答える 1

2

このドキュメントは、onPause() で登録を解除すると、一時停止時にブロードキャスト インテントを受信しないことを意味していました。登録を解除しない場合は、引き続きブロードキャスト インテントを受信します。onDestroy() で登録を解除しましたが、ホーム キーが押されたときに onStop() のみが呼び出され、onDestroy() は呼び出されません。したがって、ブロードキャストを受信し続けます。

于 2013-05-12T16:30:36.257 に答える