Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android官方開發文檔Training系列課程中文版:電池續航時間優化之檢查、檢測網絡連接狀態

Android官方開發文檔Training系列課程中文版:電池續航時間優化之檢查、檢測網絡連接狀態

編輯:關於Android編程

原文地址:http://android.xsoftlab.net/training/monitoring-device-state/connectivity-monitoring.html

通常會有一些後台服務需要連接到網絡來更新數據。但是如果沒有連接到互聯網,或者由於網絡太慢而不能完成更新,那麼為什麼不在連接到網絡後或在狀況良好時再做這些工作呢?

你可以使用ConnectivityManager來檢查是否已經連接到互聯網,如果連接上了,還可以查詢當前的網絡連接類型。

檢測是否聯網

如果沒有連接到網絡,那麼就沒必要做基於網絡的更新了。下面的代碼演示了如何通過ConnectivityManager來檢查當前的設備是否連接到了網絡。

ConnectivityManager cm =
        (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null &&
                      activeNetwork.isConnectedOrConnecting();

檢測當前的網絡連接類型

有時可能需要檢查當前的網絡連接類型。

移動設備的網絡可能是蜂窩數據、WiMAX、Wi-Fi或以太網絡提供。可以通過查詢獲知當前的網絡連接類型,並基於當前的可用帶寬來變更應用的刷新頻率。

boolean isWiFi = activeNetwork.getType() == ConnectivityManager.TYPE_WIFI;

移動數據所花費的成本要明顯的高於Wi-Fi,所以在大多數情況下,當處於移動數據連接時,應當降低更新頻率。類似的,較大文件的下載也應當暫停,直到連接到Wi-Fi網絡後再繼續下載。

因為會中斷某些網絡任務,所以監聽網絡狀況變化這一點就變得尤為重要了:以便可以在良好的網絡狀況下恢復任務。

監聽網絡連接的變化

當網絡狀況發生變化時,ConnectivityManager會廣播一個CONNECTIVITY_ACTION (“android.net.conn.CONNECTIVITY_CHANGE”)的消息。你可以在清單文件中注冊一個專門用於監聽此消息的廣播接收器,以便恢復或暫停後台網絡任務。


由於設備的網絡連接會時常發生變化,所以該廣播接收器會在每次切換到移動數據或者Wi-Fi情況下會被觸發。因此,最好是為了恢復更新或者下載才用此種方法。通常的做法是,在開始任務之前檢查一下網絡的連接狀況,如果網絡不允許,那麼使用該方法以便恢復。

這項方法需要動態開啟廣播接收器,具體的講解會在下節課描述。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved