編輯:關於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情況下會被觸發。因此,最好是為了恢復更新或者下載才用此種方法。通常的做法是,在開始任務之前檢查一下網絡的連接狀況,如果網絡不允許,那麼使用該方法以便恢復。
這項方法需要動態開啟廣播接收器,具體的講解會在下節課描述。
我們的qq有時候會有異地登陸的提示,這是怎麼回事呢?難道我們的qq號被盜了?如何才能加強手機qq的安全管理?下面我們就一起來看看吧!1、大家登錄自己的QQ賬
““XXX(機主姓名)看這個,ht://********XXshenqi.apk”最近一種手機病毒爆發,機主收到這樣的短信,開頭是以發
本文實例為大家分享了Android自定義下拉刷新上拉加載的具體實現步驟,供大家參考,具體內容如下實現的方式是SwipeRefreshLayout + RecyclerVi
greenDAO 是一個將對象映射到 SQLite 數據庫中的輕量且快速的 ORM 解決方案。 官方網站http://greendao-orm.com/ 讓我們開始吧