編輯:關於android開發
最簡單的監測設備狀態變更的做法就是為每一個狀態的變化都創建一個對應的 ,然後在 BroadcastReceiver 的實現代碼中,取得設備當前的狀態來調整應用程序的運行任務。
但是這樣做有一個缺點就是可能您的應用程序會過於頻繁的喚醒設備來處理狀態的變更,這往往不是您期待的結果。
一個更好的解決辦法就是在程序的運行過程中動態的啟用和禁用廣播事件接收器,這樣您就可以只啟用目前最關心的廣播事件接聽器,而禁用掉現在並不需要的事件接聽器。
您可以使用 來管理 manifest 中聲明的廣播接收器,示例代碼展示了如何利用這一技術來啟用和禁用相應的廣播接收器。
ComponentName receiver = new ComponentName(context, myReceiver.class); PackageManager pm = context.getPackageManager(); pm.setComponentEnabledSetting(receiver, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP)
通過使用這一技術,如果設備當前處在未聯網的狀態,那麼您的應用程序可以禁用除網絡事件接收器以外所有其他的廣播事件接聽器。相反,一旦您確定設備已經連接到了網絡,那麼就可以停止監聽網絡狀態變化的監聽器,然後簡單檢查一下是否能連接互聯網,如果能的話就可以執行應用程序的數據更新任務了。
同樣,您也可以使用該技術來延遲啟動一個需要較高帶寬的大網絡文件的下載,通過簡單注冊一個網絡連接狀態切換的事件監聽器,只有當設備切換到 wi-fi 狀態的時候才啟動文件的下載工作。
參考文摘:
轉自:http://blog.zhourunsheng.com/2011/12/android-%e7%94%b5%e6%ba%90%e7%ae%a1%e7%90%86%e4%b8%93%e9%a2%98%e4%b9%8b%e7%ae%a1%e7%90%86%e5%b9%bf%e6%92%ad%e6%8e%a5%e6%94%b6%e5%99%a8-broadcast-receivers/ | 潤物無聲
Android開發學習之路--RxAndroid之lambda RxJava的簡單使用基本上也了解了,其實還有一個比較好玩的就是java8才有的lambda了。 l
我的android學習經歷38,android學習經歷38anddroid studio的內存修改 昨天有位朋友問到了下面的一個問題 這個判斷為android stud
本文以一個簡單的Android HelloWorld程序來說明Android開
定制 黑色描邊、白色背景、帶圓角 的背景,描邊圓角首先,在drawable文件夾寫一個xml文件solid_c9c9c9.xml 1 <?xml versi