1)私にはアクティビティがあります。このアクティビティはサービスを開始し、サービスはBroadcastReceiverを作成して登録します。BroadcastReceiverライフサイクル
2)私はアクティビティを持っています。このアクティビティは、BroadcastReceiverを作成して登録します。
上記の各ケースでBroadcastReceiverのライフエンドはいつ終了するのですか?言い換えれば - それが破壊され、放送をもう聞かないのですか?
1)私にはアクティビティがあります。このアクティビティはサービスを開始し、サービスはBroadcastReceiverを作成して登録します。BroadcastReceiverライフサイクル
2)私はアクティビティを持っています。このアクティビティは、BroadcastReceiverを作成して登録します。
上記の各ケースでBroadcastReceiverのライフエンドはいつ終了するのですか?言い換えれば - それが破壊され、放送をもう聞かないのですか?
独立したライフサイクルを達成するために、マニフェスト内にブロードキャストレシーバを宣言します。
http://developer.android.com/reference/android/content/BroadcastReceiver.html
A 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();
}
おかげで、それはややそれをクリアするが、私はまだ私の目標を達成するかどうかはわかりません。私の活動は、BroadcastReceiverを登録するためにのみ使用されます。私は明示的に登録を解除するまで、ユーザーがアクティビティを終了した後、このレシーバをアクティブにします。 – rincEwind
@rincEwind:** "ユーザーがアクティビティを終了した後、このレシーバをアクティブにしたい - 明示的に登録を解除するまで、このレシーバを有効にします。** - その場合、方法1を使用してください。 'Activity'にレシーバを登録して、まずそれを登録解除せずに' Activity'を終了してはいけません。 'Service'に登録しますが、' Service'も終了前に登録を解除するようにしてください(終了した場合)。孤立した物をぶら下げないでください。 – Squonk
ありがとう、それは私がやってしまったことです、それは働いているようです。 – rincEwind