2013-07-03 36 views
2

我通過廣播接收器監聽電話狀態,爲此我在接收器的onReceive中註冊了PhoneStateListener。現在,如果用戶想禁用此功能,我將禁用廣播接收器,但監聽器繼續運行,並且我收到電話狀態通知。我如何註銷在廣播接收器中註冊的PhoneStateListener?註銷BroadcastReceiver中的PhoneStateListener

回答

6

作爲documentation說:

要取消註冊監聽器,通過監聽器對象並設置事件參數LISTEN_NONE(0)。

例如:

telephonyManager.listen(myListener, PhoneStateListener.LISTEN_NONE); 
+0

我已經嘗試過這一點,給空指針異常。我認爲這是由於創建收聽者的廣播接收機的生命。所以當我取消註冊時,廣播接收器不再存在。因此,空指針異常 – hellosheikh

+0

'BroadcastReceiver'的生存期很短。您需要將對「myListener」的引用存儲在靜態變量中,以便它不會消失。確保在註銷偵聽器後將靜態變量設置爲'null',這樣就沒有內存泄漏。 –