Android官方开发文档Training系列课程中文版:电池续航时间优化之检查、检测网络连接状态...
原文地址:http://android.xsoftlab.net/training/monitoring-device-state/connectivity-monitoring.html
通常會(huì)有一些后臺(tái)服務(wù)需要連接到網(wǎng)絡(luò)來(lái)更新數(shù)據(jù)。但是如果沒(méi)有連接到互聯(lián)網(wǎng),或者由于網(wǎng)絡(luò)太慢而不能完成更新,那么為什么不在連接到網(wǎng)絡(luò)后或在狀況良好時(shí)再做這些工作呢?
你可以使用ConnectivityManager來(lái)檢查是否已經(jīng)連接到互聯(lián)網(wǎng),如果連接上了,還可以查詢(xún)當(dāng)前的網(wǎng)絡(luò)連接類(lèi)型。
檢測(cè)是否聯(lián)網(wǎng)
如果沒(méi)有連接到網(wǎng)絡(luò),那么就沒(méi)必要做基于網(wǎng)絡(luò)的更新了。下面的代碼演示了如何通過(guò)ConnectivityManager來(lái)檢查當(dāng)前的設(shè)備是否連接到了網(wǎng)絡(luò)。
ConnectivityManager cm =(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); boolean isConnected = activeNetwork != null &&activeNetwork.isConnectedOrConnecting();檢測(cè)當(dāng)前的網(wǎng)絡(luò)連接類(lèi)型
有時(shí)可能需要檢查當(dāng)前的網(wǎng)絡(luò)連接類(lèi)型。
移動(dòng)設(shè)備的網(wǎng)絡(luò)可能是蜂窩數(shù)據(jù)、WiMAX、Wi-Fi或以太網(wǎng)絡(luò)提供。可以通過(guò)查詢(xún)獲知當(dāng)前的網(wǎng)絡(luò)連接類(lèi)型,并基于當(dāng)前的可用帶寬來(lái)變更應(yīng)用的刷新頻率。
boolean isWiFi = activeNetwork.getType() == ConnectivityManager.TYPE_WIFI;移動(dòng)數(shù)據(jù)所花費(fèi)的成本要明顯的高于Wi-Fi,所以在大多數(shù)情況下,當(dāng)處于移動(dòng)數(shù)據(jù)連接時(shí),應(yīng)當(dāng)降低更新頻率。類(lèi)似的,較大文件的下載也應(yīng)當(dāng)暫停,直到連接到Wi-Fi網(wǎng)絡(luò)后再繼續(xù)下載。
因?yàn)闀?huì)中斷某些網(wǎng)絡(luò)任務(wù),所以監(jiān)聽(tīng)網(wǎng)絡(luò)狀況變化這一點(diǎn)就變得尤為重要了:以便可以在良好的網(wǎng)絡(luò)狀況下恢復(fù)任務(wù)。
監(jiān)聽(tīng)網(wǎng)絡(luò)連接的變化
當(dāng)網(wǎng)絡(luò)狀況發(fā)生變化時(shí),ConnectivityManager會(huì)廣播一個(gè)CONNECTIVITY_ACTION (“android.net.conn.CONNECTIVITY_CHANGE”)的消息。你可以在清單文件中注冊(cè)一個(gè)專(zhuān)門(mén)用于監(jiān)聽(tīng)此消息的廣播接收器,以便恢復(fù)或暫停后臺(tái)網(wǎng)絡(luò)任務(wù)。
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>由于設(shè)備的網(wǎng)絡(luò)連接會(huì)時(shí)常發(fā)生變化,所以該廣播接收器會(huì)在每次切換到移動(dòng)數(shù)據(jù)或者Wi-Fi情況下會(huì)被觸發(fā)。因此,最好是為了恢復(fù)更新或者下載才用此種方法。通常的做法是,在開(kāi)始任務(wù)之前檢查一下網(wǎng)絡(luò)的連接狀況,如果網(wǎng)絡(luò)不允許,那么使用該方法以便恢復(fù)。
這項(xiàng)方法需要?jiǎng)討B(tài)開(kāi)啟廣播接收器,具體的講解會(huì)在下節(jié)課描述。
總結(jié)
以上是生活随笔為你收集整理的Android官方开发文档Training系列课程中文版:电池续航时间优化之检查、检测网络连接状态...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: c# 物资积累
- 下一篇: 浅谈ButterKnife对Androi