1. 程式人生 > >Android---優化下載讓網路訪問更高效(一)

Android---優化下載讓網路訪問更高效(一)

使用無線傳輸資料是你的應用程式潛在的最大的電池電量消耗源。要減少網路活動的電池電量的消耗,關鍵是要理解連線模式是如何影響底層的無線硬體的。

本文介紹無線狀態機,並解釋應用程式的連線模式如何跟它互動。為了減少資料傳輸的電池消耗,使用預提取和繫結傳輸的方式,來降低資料連線。

無線狀態機

一個完全活躍的無線訊號會顯著的消耗電池電量,因此為了減少不使用時的電量消耗,狀態機要轉換到不同的能耗狀態,並且在需要的時候,再嘗試用最小的延遲來接通無線訊號。

典型的3G網路訊號狀態機由三種能耗狀態組成:

1. 全功率:連線活躍的時候使用這種狀態,這時允許裝置使用可能的最高速率來傳輸資料。

2. 低功率:一種中間狀態,它要消耗全功率狀態下50%左右的電量;

3. 待機:在無活躍的網路連線或網路要求期間,這種狀態能耗最低。

雖然低功率和待機狀態會明顯的降低功耗,但也會顯著的讓網路請求延遲。從低功率狀態返回到全功率狀態,大約需要1.5秒,從待機到全功率在2秒以上。

要最大限度的減少延遲,狀態機使用一種延遲機制來延遲轉換到低功耗狀態。圖1是用於典型的3G訊號的AT&T時間控制:

圖1. 典型的3G無線訊號狀態機

每個種裝置上的無線訊號狀態機,尤其是相關的轉換延遲和啟動延遲,會依賴於其所使用的無線訊號技術(2G、3G、LTE等),並由裝置所承載的網路來定義和配置。

本文介紹一種典型的3G無線訊號狀態機,它基於AT&T所提供的資料。但是這些一般原則和應用程式的最佳實踐結果,適用於所有的無線訊號實現。

這種方法對典型的Web瀏覽器特別有效,它會有效的防止使用者瀏覽Web網頁時的延遲。相關的低功率狀態,也會確保瀏覽器會話一旦結束,無線訊號就可以轉移到低功耗狀態。

遺憾的是,這種方式會導致像Android這樣的作業系統上的應用程式效率變低,在前後臺執行的應用程式都會受到影響。

應用程式如何影響無線狀態機

每次建立一個新的網路連線,無線訊號都要變換到全功率狀態。如上所訴的典型的3G無線狀態機中,它會在轉換期間保持全功率,再加上從全功率到低功率的5秒鐘,以及從低功率到待機狀態的12秒鐘,因此對於典型的3G裝置,每次資料傳輸的會話都至少會消耗差不多20秒的電量。

在實踐中,如果應用程式每18秒鐘用1秒的時間來傳輸未打包的資料,就意味著無線訊號要始終保持活躍狀態,因為在訊號狀態還沒有轉換到待機狀態之前,又要回到全功率狀態。因此每分鐘會有18秒鐘處於全功率狀態,42秒鐘處於低功率狀態。

通過比較,相同的應用程式,如果每分鐘用3秒鐘來傳輸打包的資料,那麼只會讓無線訊號在全功率狀態保持8秒鐘,低功率狀態保持12秒鐘。這樣每分鐘就會有40秒的時間保持在待機狀態,因此可有效的降低電量的消耗。

圖2.使用打包和非打包方式傳輸資料時,無線訊號功率比較