Android官方開發文檔Training系列課程中文版:電池續航時間優化之按需開啓廣播接收器

原文地址:http://android.xsoftlab.net/training/monitoring-device-state/manifest-receivers.html

監測設備狀態變化最簡單的實現方式就是爲每種狀態都創建一個廣播接收器,然後只需在相應的廣播接收器內依據當前的設備狀態重新執行各自的任務即可。

這種方式的不好之處就在於每次廣播接收器被觸發後,APP都會喚醒設備。

一種比較好的解決方案就是在運行時關閉或開啓廣播接收器。這樣也可以使在清單文件中聲明的廣播接收器按需觸發。

動態開啓廣播接收器

我們可以通過PackageManager將清單文件中聲明過的任何組件切換到開啓\關閉狀態,其中也包括你將要開啓或者關閉的廣播接收器:

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,那則可以開始進行網絡下載。

發佈了73 篇原創文章 · 獲贊 146 · 訪問量 65萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章