2014-09-26 54 views
3

我有一種感覺,我已經知道這個答案,但我不知道。我正在使用廣播接收器來攔截傳入的SMS消息。Android在下次應用程序加載時註銷廣播接收器

我使用registerReceiver函數註冊接收器的典型方法,當您註銷接收器時,您使用函數unregisterReceiver函數。我保留一個全局廣播變量來根據需要加載和卸載接收器。

如果應用程序關閉,就像用戶實際關閉應用程序一樣,並且我沒有在onDestroy方法中取消註冊接收器,我知道這是不好的做法,下次應用程序加載時是否有註銷接收器的方法?我可以創建該廣播接收器的另一個實例,然後取消註冊?

回答

3

如果應用程序關閉

你可以說,你的UI在前臺與否。你可以說,你的應用程序的過程是在前臺,後臺或終止。

目前還不清楚「閉幕」會等於什麼。

像用戶實際關閉應用程序

用戶可以移動一個應用程序的用戶界面和方法的背景(例如,按下HOME)。用戶可以銷燬應用程序的用戶界面並將其進程移動到後臺(例如,按上一次運行活動的BACK)。用戶可以終止應用程序的後臺進程(例如,將應用程序從最新任務列表中刪除)。用戶可以強制停止應用程序(例如,在設置中按應用程序的強制停止按鈕)。

目前還不清楚「用戶實際關閉應用程序」等同於什麼。

有沒有辦法在下次應用程序加載時取消註冊接收器?

要麼你有一個對你的BroadcastReceiver對象的引用,或者你沒有。如果是這樣,請在上撥打unregisterReceiver(),傳入BroadcastReceiver實例。如果您沒有BroadcastReceiver實例,則無法取消註冊接收器。如果您的流程在您註冊接收者到現在之間已經終止,則該接收者已經離開並且實際上未註冊。

+1

當我說關閉應用程序我不是說單擊主頁按鈕並將其發送到背景。我的意思是實際終止這個過程。如果過程終止,接收機是否保持註冊狀態? – CBaker 2014-09-26 16:01:16

+0

@CBaker:「如果過程終止,接收者是否保持註冊?」 - 不,因爲接收器不再存在。 – CommonsWare 2014-09-26 16:05:09

+0

瞭解。非常感謝你的幫助 – CBaker 2014-09-26 16:05:51

相關問題