編輯:關於android開發
設定周期性的鬧鈴提醒和後台服務,最常見的用途是定期更新應用程序的數據,從互聯網上下載資源,緩存數據或者執行長時間的下載任務。但是如果設備當前沒有連接到網絡,或者是網絡狀況不穩定,連接太慢,不能正常完成數據的下載任務,那麼此時仍需要喚醒設備來更新數據麼?
您可以通過 來檢查設備當前是否連接到了網絡,如果已連接,具體是連接到哪種類型的網絡。
如果設備當前沒有連接到任何網絡,那麼您的應用程序也就沒有必要安排定時的數據更新任務。
示例代碼展示了如何利用 來查詢當前活躍的可連接網絡,以及設備目前是否已經聯網。
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),那麼暫停的任務就可以重新開始執行了。
一旦設備連接的網絡環境發生變化,系統的 會廣播一個類型為 (“android.net.conn.CONNECTIVITY_CHANGE“) 的通知消息,您可以在應用程序的 manifest 文件中定義相應的廣播接收器receiver,然後根據網絡環境的變化來適當調整程序數據的更新頻率。
示例代碼
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
網絡環境的變化可能會非常頻繁,只要設備的網絡環境在無線網絡和移動網絡之間來回切換的時候,系統都會廣播網絡變化的通知,比較好的做法是,只有當您的更新程序此時處於暫停的狀態,並且在網絡連接上的時候需要恢復暫停工作的執行,那麼應當注冊和監聽網絡變化的廣播,如果接收到廣播通知,只需要檢查網絡是否已經連接上了,如果網絡已經連接,那麼應用程序就可以開始數據,否則的話,仍舊保持在暫停的狀態,一直等到網絡重新連接上了,再恢復任務的執行。
我們需要這樣一種解決方法可以使您方便的注冊和注銷 manifest 中聲明的廣播接收器 Receivers, 在下一節課再繼續討論。
參考文摘:
轉自: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/ | 潤物無聲
ACCESS 觸發器delete table事件變量使用及連續刪除ACCESS的TABLE DELETE 事件觸發後,會出現一個[舊]的記錄,這條記錄非常有用,可以用來作
Android的Kotlin秘方(I):OnGlobalLayoutListener,春節後,又重新“開張”。各位高手請繼續支持。謝謝! &nbs
Android基礎入門教程——8.3.15 Paint API之——Typeface(字型) Android基礎入門教程——8.3.15 Pain
Android Hack1 使用weight屬性實現視圖的居中顯示,androidhack1本文地址:http://www.cnblogs.com/wuyudong/p/