2011-03-21 286 views
1

我知道有兩種方法可以讓您的程序知道廣播接收器。您可以在清單文件中指定,也可以在java文件中動態註冊它。我知道如果你把它放在java文件中,那麼你也必須註銷它。我的問題是,如果您只在清單文件中指定它,那麼您必須在任何地方特別註銷它。也許在清單文件中?也許在java文件中?或者,如果在清單文件中聲明,則永遠不必註銷它。廣播接收器

由於

回答

2

Auwall,

如在文檔中指出:

基類的代碼,將接收由發送sendBroadcast意圖 ()。您 可以動態註冊這個類的一個實例 與 Context.registerReceiver()或 靜態通過您 AndroidManifest.xml中標記發佈一個實現 。注意:如果 在你的 Activity.onResume()實現, 中註冊一個接收器,你應該註銷它在 Activity.onPause()。 (您在暫停時不會收到 意圖,並且會因不必要的系統開銷而削減 )。 如果 用戶在歷史堆棧向後移動,不要在 Activity.onSaveInstanceState(), 註銷,因爲這將不被稱爲

關於註銷BroadcastReceiver只適用於當你編程註冊它的說明在onResume()。如果您在AndroidManifest.xml中註冊,則無需取消註冊。

來源:http://developer.android.com/reference/android/content/BroadcastReceiver.html

+0

你能回答爲什麼,當我做靜態清單文件,我關閉程序與面漆()做廣播接收機仍然聽和做什麼,我告訴他們做什麼?我說的是接收器似乎永遠不會關閉,即使在應用程序完成後。如果您需要代碼,我可以在今天下午回家時提供代碼。謝謝 – auwall 2011-03-22 13:20:36

+1

爲什麼他們繼續傾聽,如果登記在清單?因爲這就是他們所做的。如果你不希望發生這種情況,你會想以編程方式註冊/取消註冊。 – 2011-03-22 13:23:13

+2

好吧,如果聲明是在清單文件中,那麼程序只是在應用程序完成時取消註冊。我不確定,所以我只是想看看我需要走哪條路線。我現在明白了。如果在清單文件中它保持註冊狀態,並且如果您希望它啓動並停止,那麼您需要在程序本身中執行它。謝謝您的幫助 – auwall 2011-03-22 13:26:04