簡體   English   中英

應用在后台運行時的Android Broadcast Receiver

[英]Android Broadcast Receiver when app is running in background

已經有很多與此類似的問題,但是沒有一個解決我的問題(請閱讀整個問題)。

在我的應用程序中,我需要監聽ACCESSORY_DETTACHED的意圖操作,但是只有在應用程序正在運行時(在前台或后台)才應進行處理,而在應用程序未運行時則不應進行處理。

我知道有2種選擇。 要在Manifest中注冊BroadcastReceiver(不會起作用,因為我不希望在我的應用未運行時調用onReceive)或將其注冊到Activity中(但是為了避免泄漏,我不得不在某個地方注銷它,我不能在onStop中執行此操作,因為我也需要它在后台運行,因此不建議使用onDestroy)。

我發現我可以在Application類中注冊接收器,並且它可以工作,但是仍然無法在任何地方注銷它。 這種方法會導致泄漏嗎? 我還要打擾嗎? 還有其他可能性嗎?

這種方法會導致泄漏嗎?

那將取決於您對自定義Application子類和BroadcastReceiver

通過從ApplicationonCreate()方法調用registerReceiver()不會泄漏接收器。 我們保留術語“泄漏”,以便在我們不希望使用內存時使用它,並且您希望接收器在您的進程運行期間一直工作。

但是, 接收器可能會泄漏內存,具體取決於它保存的內容(如果有的話),因為它會持續很長時間。 自定義Application其他內容可能會泄漏,具體取決於您在Application正在做什么。

因此,您的方法本身不會是內存泄漏,但是您將需要仔細檢查接收器和Application ,以確保在此過程中不會引入其他泄漏。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM