Android 优化电池使用时间——确定和检测网络状态
原文參見 此處
確定和監控網絡連接狀態
重復提醒和后臺服務最常見的用途之一,就是為來自互聯網資源的應用數據、緩存數據安排定期更新或執行長時間運行的下載任務。但是,如果您沒有連接互聯網,或因連接過慢而無法完成下載,那就根本沒必要喚醒設備并安排更新了。
您可以使用 ConnectivityManager 查看是否確實已連接互聯網,如果已連接,您還可以了解當前的連接類型。
確定是否已連接互聯網
如果設備未連接互聯網,就沒有必要根據互聯網資源安排更新了。以下代碼段說明如何使用 ConnectivityManager 查詢有效網絡并確定該網絡是否已連接互聯網。
ConnectivityManager cm =(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); boolean isConnected = activeNetwork.isConnectedOrConnecting();確定互聯網連接的類型
您也可以確定當前可用的互聯網連接的類型。
通過移動數據、WiMAX、Wi-Fi 和以太網連接可提供設備連接。您可以查詢有效網絡的類型(具體如下所示),以便根據可用帶寬調整刷新頻率。
boolean isWiFi = activeNetwork.getType() == ConnectivityManager.TYPE_WIFI;移動數據的費用往往比 Wi-Fi 高很多,因此在大多數情況下,如果您使用的是移動連接,就應降低應用更新頻率。同樣,在沒有 Wi-Fi 連接的情況下,您就應暫停較大的下載任務。
停用更新后,請務必偵聽連接情況的變化,以便在建立互聯網連接后恢復更新。
監控連接情況的變化
只要連接的具體情況發生變化,ConnectivityManager 就會廣播 CONNECTIVITY_ACTION (“android.net.conn.CONNECTIVITY_CHANGE”) 操作。您可以在清單中注冊廣播接收器,以便偵聽這些變化并相應地恢復(或暫停)后臺更新。
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>設備連接情況的變化可能會非常頻繁,只要您在移動數據和 Wi-Fi 之間相互切換,系統就會觸發此廣播。因此比較合適的做法是,僅當之前暫停了更新或下載時才監控此廣播,以便恢復更新或下載。通常,您只需在開始更新前檢查互聯網連接情況即可,如果未連接互聯網,請暫停后續更新,直到連接恢復。
此技巧需要切換您在清單中聲明的廣播接收器,具體說明請見下一教程。
總結
以上是生活随笔為你收集整理的Android 优化电池使用时间——确定和检测网络状态的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 优化电池使用时间——确定
- 下一篇: Android 优化电池使用时间——根据