2015-08-14 47 views
1

我想我在這裏看不到更大的圖片,或者想不明白BroadcastReceiver的工作原理。在Android上取消註冊BroadcastReceiver

讓我們想象一個虛擬應用程序,每次用戶收到呼叫時,應用程序都會在SD卡上的文件中註冊來電號碼。爲此,我只需創建一個BroadcastReceiver,每次用戶收到呼叫時都會啓動Service

現在,如果我想要該應用程序的作品,我明白我不能撥打unregisterReceiver()onPause()方法。但另一方面,如果我運行應用程序,有時會發生異常:

活動泄漏了最初在此註冊的IntentReceiver。你是否錯過了對unregisterReceiver()的調用?

那麼,我在這裏錯過了什麼?如果我必須撥打unregisterReceiver(),我的虛擬應用程序如何在每次通話中收到回撥?

謝謝

+0

如果您泄漏了在活動中註冊的內存接收器,您可能只會收到此消息。如果您想在應用程序級別註冊接收者,您需要在清單中執行此操作,或者在創建應用程序時執行此操作。 – dcow

回答

2

如何將我的虛擬應用程序在每次調用接收回,如果我有打電話給unregisterReceiver()?

有兩種方法來建立一個BroadcastReceiver

  • registerReceiver(),這僅適用於將運行其他原因

  • <receiver>在清單

  • 過程有用

你的情況聽起來像是使用01的情況。