2012-03-30 25 views
68

如果我正在構建智能手機應用程序,該應用程序定期從服務器下載數據,並間歇性地上傳數據(分析,廣告等),我該怎麼做盡量減少這些傳輸對電池壽命的影響?減少通過智能手機無線電下載內容的應用程序對電池的影響

使用無線通信(2G,3G,LTE等)傳輸的電池影響尤其顯着。是否有關於無線射頻的電源使用情況的任何信息,這些信息會影響我選擇何時,以何種方式傳輸數據以最大限度地減少對電池壽命的影響?

回答

79

這個答案是從Android培訓班總結, Transferring Data Without Draining the Battery這 解釋如何減少下載 和網絡連接的電池壽命的影響,尤其是涉及到 無線電臺。

特別Optimizing Downloads for Efficient Network Access 解釋在一些細節的無線電狀態機並繼續 來解釋你的應用程序的連接模式應該如何與它交互 以減少相關的電池消耗。

的無線電狀態機

Reference

每次你創建一個新的網絡連接的無線電將轉換到滿功率狀態。這種轉換通常需要大約2秒鐘,所以爲了最小化等待時間,無線電引入延遲以推遲到較低能量狀態的轉換。

傳輸完成後,典型的3G無線電將保持全功率狀態5秒鐘,然後再在低能量狀態下等待12秒鐘,然後再進入待機狀態。每次連接時,收音機總共將耗電近20秒。

這種方法可能會導致運行在現代智能手機操作系統上的應用程序效率低下,其中應用程序在前臺(延遲時間很重要)和後臺(電池壽命應該優先)中運行。

解決方案

對您的電池最大限度地減少下載的效果的關鍵是認識到轉讓的頻率比下載的大小更爲顯着的影響。實際上,預取和排隊/捆綁您的轉賬特別有效。

瞭解到每次啓動連接都有可能導致無線電功耗達到近20秒時,捆綁您的數據傳輸非常重要,這樣您就可以有效地實現類似於相似傳輸時間窗口,以便在每次傳輸會話期間傳輸儘可能多的數據,以儘量減少會話數量。

同樣,預取允許您在單個連接中以滿容量在單個突發中下載給定時間段內可能需要的所有數據。通過前端加載傳輸,可以減少下載數據所需的無線電激活次數,從而延長電池壽命,延長延遲時間,降低帶寬並縮短下載時間。

但是,預取還會通過下載未使用的數據引入增加電池消耗和帶寬使用的風險。

您預取的積極程度取決於下載數據的大小以及使用的可能性。一般來說,預取數據是一種很好的做法,因此您只需要每2到5分鐘啓動一次下載,大小爲1到5兆字節。

重複使用現有網絡連接而不是創建新連接通常更高效。重用連接還可以使網絡更加智能地應對擁塞和相關的網絡數據問題。

11

我建議你在應用程序設置中添加「應用程序的同步頻率」首選項 - 因此用戶在平衡數據新鮮度和電池使用率方面有一些話語權。不同的用戶有不同的優先級

相關問題