編輯:Android開發實例
最簡單的監測設備狀態變更的做法就是為每一個狀態的變化都創建一個對應的 BroadcastReceiver ,然後在 BroadcastReceiver 的實現代碼中,取得設備當前的狀態來調整應用程序的運行任務。
但是這樣做有一個缺點就是可能您的應用程序會過於頻繁的喚醒設備來處理狀態的變更,這往往不是您期待的結果。
一個更好的解決辦法就是在程序的運行過程中動態的啟用和禁用廣播事件接收器,這樣您就可以只啟用目前最關心的廣播事件接聽器,而禁用掉現在並不需要的事件接聽器。
您可以使用 PackageManager 來管理 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://developer.android.com/training/monitoring-device-state/manifest-receivers.html
轉自: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/ | 潤物無聲
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩
Android應用程序可以在許多不同地區的許多設備上運行。為了使應用程序更具交互性,應用程序應該處理以適合應用程序將要使用的語言環境方面的文字,數字,文件等。在本章中,我
大家好,眾所周知,android裡兩個相同方向的ScrollView是不能嵌套的,那要是有這樣的需求怎麼辦?(這個需求一般都是不懂android的人提出來的)難道
本文實例講述了Android編程實現監聽EditText變化的方法。分享給大家供大家參考,具體如下: 監聽EditText中的內容的變化。在EditText沒有找