我有一個Android庫,需要一個BroadcastReceiver,它在對象構造函數中註冊。它根據不斷變化的互聯網狀態對該對象執行操作。但是,我遇到了關於泄露的接收器的錯誤消息,因爲我不稱之爲取消註冊。從Android上的非活動取消註冊BroadcastReceiver
當我沒有關於活動何時結束的信息時,如何以及在哪裏可以取消註冊?由於我只提供將由一個Activity實例化的類,所以沒有onPause,onClose方法。
我有一個Android庫,需要一個BroadcastReceiver,它在對象構造函數中註冊。它根據不斷變化的互聯網狀態對該對象執行操作。但是,我遇到了關於泄露的接收器的錯誤消息,因爲我不稱之爲取消註冊。從Android上的非活動取消註冊BroadcastReceiver
當我沒有關於活動何時結束的信息時,如何以及在哪裏可以取消註冊?由於我只提供將由一個Activity實例化的類,所以沒有onPause,onClose方法。
您可以嘗試將您的接收器保存爲靜態。我認爲如果你註冊兩次相同的接收器,只會得到這個錯誤。
如果失敗了,也可以嘗試調用context.getApplicationContext()。registerBroadcastReceiver()而不是使用活動上下文。
您是否應該擴展Activity
,使用Android的工作流程正常工作,然後讓您的用戶擴展您的活動?
這只是一個建議,但它肯定會解決您所描述的問題,因爲您可以在onCreate()
上註冊接收器並在onDestroy()
上取消註冊。
使用context.getApplicationContext()做了訣竅。謝謝! – nicobatu 2012-02-22 20:07:31