Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android 電源管理專題之獲取和監測網絡連接狀態

Android 電源管理專題之獲取和監測網絡連接狀態

編輯:Android開發實例

設定周期性的鬧鈴提醒和後台服務,最常見的用途是定期更新應用程序的數據,從互聯網上下載資源,緩存數據或者執行長時間的下載任務。但是如果設備當前沒有連接到網絡,或者是網絡狀況不穩定,連接太慢,不能正常完成數據的下載任務,那麼此時仍需要喚醒設備來更新數據麼?

您可以通過 ConnectivityManager 來檢查設備當前是否連接到了網絡,如果已連接,具體是連接到哪種類型的網絡。

檢測網絡連接狀態

如果設備當前沒有連接到任何網絡,那麼您的應用程序也就沒有必要安排定時的數據更新任務。
示例代碼展示了如何利用 ConnectivityManager 來查詢當前活躍的可連接網絡,以及設備目前是否已經聯網。

ConnectivityManager cm =
(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork.isConnectedOrConnecting();

檢測網絡的類型

目前 Android 設備支持的網絡類型有移動網絡,WiMAX,Wi-Fi和以太網。
通過查詢當前激活的網絡類型,可以獲得網絡帶寬等信息,然後據此調整您應用程序的後台數據刷新頻率。

示例代碼

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

移動網絡的費用要明顯高於無線網絡的費用,因此,在大多數情況下,如果當前設備連接的是移動網絡,那麼您應用程序的後台數據更新頻率應盡可能保持比較低的狀態,同樣地,如果要下載一個較大的網絡文件,在移動網絡下應該暫停下載工作,等設備重新連接到了無線網絡的環境再恢復下載工作。

雖然已經暫停了應用程序的後台更新操作,您的應用程序還是應該時刻監測當前設備網絡的變化,一旦設備連接上了合適的網絡環境(比如wi-fi),那麼暫停的任務就可以重新開始執行了。

監測網絡連接的變化

一旦設備連接的網絡環境發生變化,系統的 ConnectivityManager 會廣播一個類型為 CONNECTIVITY_ACTION (“android.net.conn.CONNECTIVITY_CHANGE“) 的通知消息,您可以在應用程序的 manifest 文件中定義相應的廣播接收器receiver,然後根據網絡環境的變化來適當調整程序數據的更新頻率。

示例代碼

<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>

網絡環境的變化可能會非常頻繁,只要設備的網絡環境在無線網絡和移動網絡之間來回切換的時候,系統都會廣播網絡變化的通知,比較好的做法是,只有當您的更新程序此時處於暫停的狀態,並且在網絡連接上的時候需要恢復暫停工作的執行,那麼應當注冊和監聽網絡變化的廣播,如果接收到廣播通知,只需要檢查網絡是否已經連接上了,如果網絡已經連接,那麼應用程序就可以開始數據,否則的話,仍舊保持在暫停的狀態,一直等到網絡重新連接上了,再恢復任務的執行。

我們需要這樣一種解決方法可以使您方便的注冊和注銷 manifest 中聲明的廣播接收器 Receivers, 在下一節課再繼續討論。

參考文摘:
https://developer.android.com/training/monitoring-device-state/connectivity-monitoring.html

 

轉自:http://blog.zhourunsheng.com/2011/12/android-%e7%94%b5%e6%ba%90%e7%ae%a1%e7%90%86%e4%b8%93%e9%a2%98%e4%b9%8b%e8%8e%b7%e5%8f%96%e5%92%8c%e7%9b%91%e6%b5%8b%e7%bd%91%e7%bb%9c%e8%bf%9e%e6%8e%a5%e7%8a%b6%e6%80%81/ | 潤物無聲

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