簡體   English   中英

應用程序進入后台時注銷廣播接收器

[英]Unregistering Broadcast Receiver when application goes to background

我需要檢查應用程序中的網絡連接。 如果沒有互聯網連接的任何內容都不工作 我已經使用BroadcastReceivers實現了此功能,但是當我的應用程序在后台運行時,我希望接收器未注冊 (即不被調用)。 接收器應僅在用戶使用應用程序時才能工作。

最初,我在清單中注冊了一個廣播接收器,但我注意到即使我的應用程序處於后台,它也被解雇了。 因此,我放棄了這個主意。

然后,我在onResume()中注冊了接收者,而在onPause()中未注冊了。 但是,這樣做的問題是,如果我從應用程序的活動A轉到活動B,則接收者將在A的onPause()上取消注冊,然后再次在B的onResume()中注冊。這使活動過渡很繁重。 即使在這種情況下,注銷和注冊過程也不應發生。

我只希望接收者在用戶停止使用該應用程序時取消注冊,而不是在活動轉換期間取消注冊,但當應用程序在后台運行也不繼續運行 我曾考慮過使用服務,但我想檢測網絡連接的變化,這對於接收者來說最好。

因此,有沒有辦法檢測應用程序何時在后台運行,以便我可以注銷接收器? 如果沒有,實現我的要求的最佳方法是什么?

我有用於注冊,注銷接收器以及已經檢測到連接更改的代碼。

查看本教程,然后在正確的位置注冊/注銷接收器。

暫無
暫無

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

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