[英]Android Broadcast Receiver when app is running in background
已經有很多與此類似的問題,但是沒有一個解決我的問題(請閱讀整個問題)。
在我的應用程序中,我需要監聽ACCESSORY_DETTACHED的意圖操作,但是只有在應用程序正在運行時(在前台或后台)才應進行處理,而在應用程序未運行時則不應進行處理。
我知道有2種選擇。 要在Manifest中注冊BroadcastReceiver(不會起作用,因為我不希望在我的應用未運行時調用onReceive)或將其注冊到Activity中(但是為了避免泄漏,我不得不在某個地方注銷它,我不能在onStop中執行此操作,因為我也需要它在后台運行,因此不建議使用onDestroy)。
我發現我可以在Application類中注冊接收器,並且它可以工作,但是仍然無法在任何地方注銷它。 這種方法會導致泄漏嗎? 我還要打擾嗎? 還有其他可能性嗎?
這種方法會導致泄漏嗎?
那將取決於您對自定義Application
子類和BroadcastReceiver
。
通過從Application
的onCreate()
方法調用registerReceiver()
不會泄漏接收器。 我們保留術語“泄漏”,以便在我們不希望使用內存時使用它,並且您希望接收器在您的進程運行期間一直工作。
但是, 接收器可能會泄漏內存,具體取決於它保存的內容(如果有的話),因為它會持續很長時間。 自定義Application
其他內容可能會泄漏,具體取決於您在Application
正在做什么。
因此,您的方法本身不會是內存泄漏,但是您將需要仔細檢查接收器和Application
,以確保在此過程中不會引入其他泄漏。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.