編輯: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/ | 潤物無聲
Android提供了許多方法來控制播放的音頻/視頻文件和流。其中該方法是通過一類稱為MediaPlayer。Android是提供MediaPlayer類訪問內置的媒體播放
前言 本文主要介紹在Android中怎樣來解析XML文件。主要采用的是SAX機制,SAX全稱為Simple API for XML,它既是一種
1.底層網絡接口采用apache的httpclient連接池框架; 2.圖片緩存采用基於LRU的算法; 3.網絡接口采用監聽者模式; 4.包含圖片的OOM處理(及
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩