1)我有一個活動。該活動啓動一個服務,然後創建並註冊BroadcastReceiver。BroadcastReceiver生命週期
2)我有一個活動。此活動創建並註冊BroadcastReceiver。
在以上每種情況下,BroadcastReceiver的壽命何時結束?換句話說 - 當它被摧毀,不會再聽廣播?
1)我有一個活動。該活動啓動一個服務,然後創建並註冊BroadcastReceiver。BroadcastReceiver生命週期
2)我有一個活動。此活動創建並註冊BroadcastReceiver。
在以上每種情況下,BroadcastReceiver的壽命何時結束?換句話說 - 當它被摧毀,不會再聽廣播?
在清單中聲明廣播接收器以實現它的獨立生命週期。
http://developer.android.com/reference/android/content/BroadcastReceiver.html
一個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'。將其註冊到一個「服務」中,但確保「服務」在其完成之前也將其註銷(如果/完成時)。不要把孤立的物體懸掛在外面。 – Squonk
謝謝,這就是我最終做的,它似乎正在工作。 – rincEwind