1)アクティビティがあります。このアクティビティはサービスを開始し、サービスはBroadcastReceiverを作成して登録します。
2)アクティビティがあります。このアクティビティは、BroadcastReceiverを作成および登録します。
上記の各ケースでBroadcastReceiverの寿命はいつ終了しますか?言い換えれば、それが破壊されて、もう放送を聞かないとき?
マニフェストでブロードキャストレシーバーを宣言して、独立したライフサイクルを実現します。
http://developer.Android.com/reference/Android/content/BroadcastReceiver.html
BroadcastReciverのライフサイクルでは、onReceive()メソッドのみが呼び出されます。
BroadcastRecieverのライフサイクルは、登録を解除すると終了します(つまり、ブロードキャストの受信を停止します)。通常、これはonPause/onStopメソッドで行います。しかし、技術的にはあなた次第です。
例:
@Override
public void onResume() {
super.onResume();
// Register mMessageReceiver to receive messages.
LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,
new IntentFilter("my-event"));
}
// handler for received Intents for the "my-event" event
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Extract data included in the Intent
String message = intent.getStringExtra("message");
Log.d("receiver", "Got message: " + message);
}
};
@Override
protected void onPause() {
// Unregister since the activity is not visible
LocalBroadcastManager.getInstance(this).unregisterReceiver(mMessageReceiver);
super.onPause();
}