web-dev-qa-db-ja.com

BroadcastReceiverのライフサイクル

1)アクティビティがあります。このアクティビティはサービスを開始し、サービスはBroadcastReceiverを作成して登録します。

2)アクティビティがあります。このアクティビティは、BroadcastReceiverを作成および登録します。

上記の各ケースでBroadcastReceiverの寿命はいつ終了しますか?言い換えれば、それが破壊されて、もう放送を聞かないとき?

11
rincEwind

マニフェストでブロードキャストレシーバーを宣言して、独立したライフサイクルを実現します。

http://developer.Android.com/reference/Android/content/BroadcastReceiver.html

4
AndRSoid

BroadcastReciverのライフサイクルでは、onReceive()メソッドのみが呼び出されます。

1

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();
} 
0
Or Bar