2012-11-13 144 views
1

在我的應用程序中我有2 BroadcastReceivers。讓我們打電話AReceiverBReceiverAReceiver只是在偵聽android.intent.action.BOOT_COMPLETED,所以如果它在我的應用程序的設置中打開,它可以註冊BReceiver以執行其他操作。檢索已註冊BroadcastReceiver的實例以取消註冊

所以我有一個PreferenceActivity可以切換我的應用程序的狀態,這意味着:

  • 狀態:在
    • AReceiver寄存器BReceiver在啓動
    • 想從OFF改變 - > On應寄存器BReceiver
  • S tatus:關
    • AReceiver將在啓動
    • 從在更改註冊BReceiver - >關閉應註銷BReceiver

這是我遇到的問題。我如何註銷BReceiver,如果它在AReceiverPreferenceActivity中註冊,可能在此期間關閉?我不知道我必須傳遞給unregisterBroadcastReceiver()作爲參數,因爲它需要註冊接收方的實例。

如何檢索註冊BroadcastReceiver的實例,以便我可以取消其註冊?

回答

0

您應該能夠將BReceiver放入清單中(默認禁用),然後在任何時候啓用和禁用它。看一看here

+0

謝謝。我知道清單中接收器的「啓用」狀態,但我還是認爲我仍然需要取消註冊。你不應該假設:/實際上,使用這個我只需要在首選項改變時切換狀態,因此呈現'AReceiver'沒有用,因爲我可以將'IntentFilter'放入清單中。 – taymless

0

您可以使BReceiver的激活始終通過AReceiver完成(即使在首選項中切換OFF-> ON時)。因此,AReceiver存儲了BReceiver的實例並能夠註銷它。是否有意義 ?

+0

如果我理解你是對的,你的意思是我應該在'AReceiver'中存儲'Breceiver'的實例。如果是這樣,我不認爲這會起作用,因爲'BroadcastReceiver'實例的生命週期僅限於onReceive。因此,在啓動時重新註冊「BReceiver」的實例將不會與以後使用該設置的實例相同。 – taymless

+0

是的,你是完全正確的。然後去@ iLRedEiMAtTi的解決方案:) – fiddler