Android官方开发文档Training系列课程中文版:电池续航时间优化之检查、检测网络连接状态...
原文地址:http://android.xsoftlab.net/training/monitoring-device-state/connectivity-monitoring.html
通常會有一些后臺服務需要連接到網絡來更新數據。但是如果沒有連接到互聯網,或者由于網絡太慢而不能完成更新,那么為什么不在連接到網絡后或在狀況良好時再做這些工作呢?
你可以使用ConnectivityManager來檢查是否已經連接到互聯網,如果連接上了,還可以查詢當前的網絡連接類型。
檢測是否聯網
如果沒有連接到網絡,那么就沒必要做基于網絡的更新了。下面的代碼演示了如何通過ConnectivityManager來檢查當前的設備是否連接到了網絡。
ConnectivityManager cm =(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); boolean isConnected = activeNetwork != null &&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官方开发文档Training系列课程中文版:电池续航时间优化之检查、检测网络连接状态...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c# 物资积累
- 下一篇: parasoft Jtest 使用教程: