使用無線電傳輸資料可能是應用程式耗電量最大的來源之一。如要盡量減少與網路活動相關的耗電量,請務必瞭解連線模型如何影響底層無線電硬體。
本節將介紹無線電狀態機制,並說明應用程式的連線模式如何與之互動。此 API 會提供一些技術 這樣就能盡量減少應用程式資料所造成的影響 就會比較耗電
無線電狀態機器
使用者裝置上的無線電台內建省電功能,可協助減少電池耗電量。完全啟用後, 無線無線電會耗用大量電力,但閒置或待機模式時, 無線電耗電量極低
請注意,無線電無法從待機狀態立即切換為完全運作狀態。另一個延遲期間 「開機」廣播。因此,電池會從較高能量狀態緩慢轉換至較低能量狀態,以便在未使用時節省電力,同時盡量減少與「開啟」無線電相關的延遲時間。
一般 3G 網路無線電的狀態機包含三種能量狀態:
- 充飽電:在連線有效時使用,可讓裝置 以最高速率移轉資料。
- 低耗電:可將電池耗電量降低約 50% 的中間狀態。
- 待命:未使用網路的最低耗電狀態 已啟用。
在低待機狀態和待機狀態期間,耗電量會大幅降低 可能會大幅延遲網路要求將電量恢復全滿原電 低狀態需要約 1.5 秒的時間,從待機模式移動到充飽電 大約需要 2 秒的時間
為盡量減少延遲時間,狀態機制會使用延遲時間,將轉換延後至較低的省電狀態。圖 1 使用 AT&T 的一般 3G 無線電播放時間。
圖1. 典型的 3G 無線電狀態機制。
每部裝置的無線電狀態機器,尤其是相關聯的轉換延遲 (「尾端時間」) 和啟動延遲,會因所採用的無線電技術 (3G、LTE、5G 等) 而異,並由裝置運作的電信業者網路定義及設定。
本頁面根據 AT&T 提供的資料,說明典型 3G 無線電的代表性狀態機器。不過,一般原則和 產生的最佳做法適用於所有無線無線電實作方式。
這種做法特別適合一般行動版網頁瀏覽,因為可避免使用者在瀏覽網頁時發生不必要的延遲。相對較短的尾端時間也能確保瀏覽工作階段結束後,無線電可以轉移至較低的耗電狀態。
不過,在 Android 等現代智慧型手機作業系統上,這種做法可能會導致應用程式效率不彰,因為應用程式會同時在前景 (延遲時間很重要) 和背景 (應優先考量電池續航力) 執行。
應用程式如何影響無線電狀態機器
每次建立新的網路連線時,無線電會轉換為全功率狀態。以一般 3G 無線電狀態機器為例 之前,裝置會在你轉移期間全程充滿電,而且 再加上 5 秒的尾隨時間—後在低耗電的情況下,持續 12 秒 時間。因此,就一般 3G 裝置而言,每個資料移轉工作階段都會造成 以繪製能量至少 18 秒。
實務上,這意味著應用程式會進行 1 秒的資料轉移 每分鐘有三次,就能讓無線無線電一直保持運作狀態 切換回高功率,就如同進入待機模式一樣。
圖2. 每分鐘執行三次一秒傳輸作業的相對無線電功率使用量。圖表不包含「增強效果」之間的延遲
相比之下,如果同一個應用程式將資料傳輸作業綁定在一起,每分鐘執行一次三秒的傳輸作業,則無線電會維持在高耗電狀態,總共只會維持 20 秒。如此一來,無線電即可 每分鐘都待在待機 40 秒,因此 降低耗電量
圖3.連續三秒傳輸的相對無線無線電電源
每分鐘執行一次
最佳化技巧
瞭解網路存取對電池續航力的影響後,接下來我們將說明幾個可減少電池耗電量,同時提供快速流暢使用者體驗的做法。
資料移轉組合
如上一節所述,您可以整合資料移轉的資料, 減少資料傳輸的頻率是提升電池用量的好方法之一 效率。
當然,如果您的應用程式需要接收 在使用者動作時立即傳送資料。如要緩解這個情況, 預測及預先擷取資料。其他情境 (例如將記錄或分析資料傳送至伺服器,以及其他非緊急的應用程式啟動資料移轉作業) 非常適合進行批次處理和捆綁。請參閱最佳化 應用程式啟動 工作 排定背景網路傳輸作業的訣竅。
預先擷取資料
預先擷取資料是另一種有效的方式,可減少應用程式執行的獨立資料移轉工作階段數量。透過預先擷取功能 若使用者在應用程式中採取特定行動,應用程式會預測哪些資料最有可能 並擷取 會以完整容量,透過單一連線爆發,
透過前端載入傳輸作業,可減少無線電的啟用次數 下載資料所需的環境因此,您不只要節省電池續航力。 還能加快延遲時間、降低所需頻寬並減少下載次數 次。
預先擷取功能也能大幅減少應用程式內的使用者體驗,進而改善使用者體驗 (因為等待下載完成後才執行動作導致的延遲) 或檢視資料
我們來看個實際例子
新聞讀者
許多新聞應用程式會在 已選取類別, 僅在使用者想要閱讀的文章時,才顯示完整文章。 和縮圖一樣
使用這種方法後,大多數使用者在閱讀新聞時,瀏覽標題、變更類別和閱讀文章時,廣播就會強制保持啟用狀態。不只如此,系統還會不斷切換使用不同能量狀態 可能會導致延遲的情況。 文章。
更好的做法是在啟動時預先擷取合理的資料量, 一開始都是第一組新聞標題和縮圖,確保 低延遲啟動時間,並繼續使用其餘標題 縮圖以及每篇文章至少提供 主要廣告標題清單
另一種做法是預先擷取每個標題、縮圖、文章文字,甚至是整篇文章的圖片,通常會在背景中依照預先設定的時間表執行。這種做法可能會耗費大量頻寬和電池續航力,用於下載從未使用的內容,因此應謹慎實施。
其他注意事項
雖然預先載入資料有許多優點,但如果過度使用預先載入功能,也會帶來風險,因為系統會下載未使用的資料,導致電池耗電量和頻寬用量增加,以及下載配額增加。另外,請務必確保預先載入不會在應用程式等待預先載入完成時延遲應用程式啟動。在實際情況中,這可能表示要逐步處理資料,或啟動依序傳輸作業,並依優先順序處理資料,以便先下載及處理應用程式啟動作業所需的資料。
預先擷取資料的積極程度取決於要下載的資料大小,以及資料被使用的可能性。根據 針對可能使用 50% 時間的資料 目前的使用者工作階段中,通常可以預先擷取約 6 秒 (約為 1-2 MB) 之後,才可能產生未使用的下載費用 起初,就是不下載該資料可能節省的費用。
一般來說,預先擷取資料最好 且每 2 到 5 分鐘就重新下載一次,而且順序為 5 MB。
依據這項原則,下載大型檔案 (例如影片檔案) 時,應以規律的間隔 (每 2 到 5 分鐘) 分段下載,有效地預先載入可能在接下來幾分鐘內觀看的影片資料。
解決方案之一是,只在連上 Wi-Fi 時 (或許還要加上裝置充電時) 安排完整下載作業。 WorkManager API 可讓您限制背景工作 直到裝置符合開發人員指定的條件,例如充電和 電腦正在連線到 Wi-Fi。
提出要求前請先檢查連線能力
搜尋行動訊號是行動裝置上耗電量最高的作業之一。針對使用者發起的要求,最佳做法是先使用 ConnectivityManager
檢查連線狀態,如監控連線狀態和連線計量功能所示。如果沒有網路連線,應用程式可能會強制不要使用行動無線電,藉此節省電力
即可搜尋。系統接著會安排要求,並與其他相關人員一起執行
系統在建立連線時負責這兩項要求
連線集區
除了批次處理和預先擷取以外,還有一種策略也有助於進行批次處理和預先擷取。 以彙整應用程式的網路連線。
一般來說,重複使用現有網路連線比建立新連線更有效率。重複使用連線還能讓網路 更快速地因應壅塞和相關網路資料問題。
HttpURLConnection
和大多數 HTTP 用戶端 (例如 OkHttp) 預設會啟用連線集區,並重複使用相同連線來處理多個要求。
回顧與展望
在本節中,您已瞭解無線電台的相關知識,並學到一些可廣泛套用的策略,藉此提供快速、即時的使用者體驗,同時減少電池耗電量。
下一節將詳細說明三種不同類型的廣告素材 這是大多數應用程式常見的網路互動方式您將瞭解各產品的要素 以及用來管理這些型別的新型技術和 API 有效促進互動