注:本文翻譯自Google官方的Android Developers Training文檔,譯者技術(shù)一般,由于喜愛(ài)安卓而產(chǎn)生了翻譯的念頭,純屬個(gè)人興趣愛(ài)好。
原文鏈接: http://developer.android.com/training/efficient-downloads/connectivity_patterns.html
不同連接類(lèi)型對(duì)于電池壽命的影響是不一樣的。首先使用Wi-Fi會(huì)比使用無(wú)線網(wǎng)絡(luò)(比如GPRS)消耗的電量小的多。而且不同的通信技術(shù)對(duì)于電量的影響也是有很大差異的。
一). 使用Wi-Fi
在大多數(shù)情況下一個(gè)Wi-Fi連接會(huì)提供更大的帶框而消耗的電量卻更低。所以說(shuō)你必須盡量通過(guò)Wi-Fi來(lái)連接數(shù)據(jù)。
你可以使用一個(gè)廣播接收器來(lái)監(jiān)聽(tīng)連接狀態(tài)的變化。當(dāng)建立了Wi-Fi連接后,執(zhí)行大量的數(shù)據(jù)下載,計(jì)劃更新,甚至臨時(shí)性地增加計(jì)劃更新的頻率。具體的細(xì)節(jié)可以閱讀 Optimizing Battery Life 課中的 Determining and Monitoring the Connectivity Status 。
二). 使用更大的帶寬,在更低的頻率下去下載更多的數(shù)據(jù)
當(dāng)用無(wú)線電連接時(shí),更大的帶寬通常意味著更多的電量消耗。所以這就意味著LTE會(huì)比3G消耗更多的電量,也比2G的價(jià)錢(qián)更高。
這意味著雖然底層的無(wú)線電狀態(tài)機(jī)會(huì)隨著實(shí)現(xiàn)的技術(shù)不同而不同,但通常來(lái)說(shuō),更大帶寬的無(wú)線電技術(shù)意味著在狀態(tài)切換時(shí)間階段對(duì)電池的影響也會(huì)更大。
同時(shí),更高的帶寬意味著你可以預(yù)取更多的數(shù)據(jù),在同一時(shí)間段內(nèi)下載更多的數(shù)據(jù)。不太直觀地說(shuō),因?yàn)槲矔r(shí)間的電池消耗相對(duì)而言要更高,所以不如對(duì)每一個(gè)傳輸數(shù)據(jù)的會(huì)話,保持無(wú)線電在活躍的狀態(tài)從而減少更新的頻率,這樣可能會(huì)效率更高一些。
例如,如果一個(gè)LTE網(wǎng)絡(luò)和3G網(wǎng)絡(luò)相比具有2倍的帶寬和2倍的能量消耗,你應(yīng)該在每一個(gè)會(huì)話下載4倍的數(shù)據(jù)——大約是10mb的數(shù)據(jù)。當(dāng)下載了這么多數(shù)據(jù)后,還需要考慮預(yù)取對(duì)于本地存儲(chǔ)的影響,并且定期刷新你的預(yù)取緩存。
你可以使用 connectivity manager 來(lái)確定當(dāng)前的連接狀態(tài),并相應(yīng)地修改你的預(yù)取策略:
ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); int PrefetchCacheSize = DEFAULT_PREFETCH_CACHE; switch (activeNetwork.getType()) { case (ConnectivityManager.TYPE_WIFI): PrefetchCacheSize = MAX_PREFETCH_CACHE; break ; case (ConnectivityManager.TYPE_MOBILE): { switch (tm.getNetworkType()) { case (TelephonyManager.NETWORK_TYPE_LTE | TelephonyManager.NETWORK_TYPE_HSPAP): PrefetchCacheSize *= 4 ; break ; case (TelephonyManager.NETWORK_TYPE_EDGE | TelephonyManager.NETWORK_TYPE_GPRS): PrefetchCacheSize /= 2 ; break ; default : break ; } break ; } default : break ; }
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
