2016-05-04 81 views
0

假設我動態註冊BroadcastReceiver這是活動onCreate()的內部類別,並且不要在代碼中的任何位置註銷它。如果我們不取消註冊BroadcastReceiver會發生什麼?

現在假設調用了finish(),過了一段時間後,應用程序再次打開。新的接收器對象會被使用嗎?考慮到具有相同意圖過濾器的舊接收器對象可能仍在存儲器中...

+0

如果您的活動在未註銷的情況下完成,它將泄漏Receiver,並且您的logcat中會收到令人討厭的消息。如果您再次啓動活動,Receiver將成爲一個新的不同實例。 –

+1

@ MikeM。泄露的接收器是否會收到廣播? – Tejas

回答

1

如果您忘記註銷接收器內部活動類,Android系統會報告泄漏的廣播接收器錯誤。

但是,如果BroadcastReceiver是由服務動態註冊的,那麼如果您確定服務被銷燬時未註冊它,它將不會泄漏。服務重新啓動後(在被系統殺死後),它會嘗試再次更新。當此更新失敗時,您將再次註冊BroadcastReceiver以偵聽連接更改。

相關問題