編輯:關於Android編程
在開發android應用時,涉及到要進行網絡訪問,時常需要進行網絡狀態的檢查,以提供給用戶必要的提醒。一般可以通過ConnectivityManager來完成該工作。
ConnectivityManager有四個主要任務:
1、監聽手機網絡狀態(包括GPRS,WIFI, UMTS等)
2、手機狀態發生改變時,發送廣播
3、當一個網絡連接失敗時進行故障切換
4、為應用程序提供可以獲取可用網絡的高精度和粗糙的狀態當我們要在程序中監聽網絡狀態時,只要一下幾個步驟即可:
1、定義一個Receiver重載其中的onReceive函數,在其中完成所需要的功能,如根據WIFI和GPRS是否斷開來改變空間的外觀
connectionReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { ConnectivityManager connectMgr = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); NetworkInfo mobNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); NetworkInfo wifiNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI); if (!mobNetInfo.isConnected() && !wifiNetInfo.isConnected()) { Log.i(TAG, "unconnect"); // unconnect network }else { // connect network } } };
2、在適當的地方注冊Receiver,可以在程序中注冊,在onCreate中調用如下函數即可:
IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); registerReceiver(connectionReceiver, intentFilter);
3、在適當時取消注冊Receiver,可以在程序中取消,在onDestroye中調用如下函數即可:
if (connectionReceiver != null) { unregisterReceiver(connectionReceiver); }
Ps:網上還有很多關於使用TelephonyManager 的方法的,方法如下(但是我試了好幾次都有問題,如每次第一次進入一個Activity時會自動收到網絡斷開的信號,每次網絡狀態改變時收到多次回調且狀態不正確。不知道有什麼要注意的地方,求指點!)
final TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); mTelephonyMgr.listen(new PhoneStateListener(){ @Override public void onDataConnectionStateChanged(int state) { switch(state){ case TelephonyManager.DATA_DISCONNECTED://網絡斷開 break; case TelephonyManager.DATA_CONNECTING://網絡正在連接 break; case TelephonyManager.DATA_CONNECTED://網絡連接上 break; } } }, PhoneStateListener.LISTEN_DATA_CONNECTION_STATE);
至於第二種方法,本人並沒有去嘗試過。第一種方式還是比較好用,如果要程序隱藏在後台的話,建議開個service,將BroadcastReceiver注冊在service,但不要忘了取消注冊。
在測試中遇到過這樣的狀況,將一個當前連接wifi的路由設備關閉,但是程序並沒有捕捉到unconnect network,可能是因為手機設備立刻連接另一個路由設備了。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持本站。
如圖所示為程序效果動畫圖地圖滾動的原理在本人之前博客的文章中介紹過人物在屏幕中的移動方式,因為之前拼的游戲地圖是完全填充整個手機屏幕的,所以無需處理地圖的平滑滾動。這篇文
在android開發中,經常需要使用數據分頁,比如要實現一個新聞列表的顯示,或者博文列表的顯示,不可能第一次加載就展示出全部,這就需要使用分頁的方法來加載數據,在andr
簡介屬性動畫是API 11新加入的特性,和View動畫不同,它對作用對象進行了擴展,屬性動畫可以對任意對象做動畫,也不像View動畫只支持四種簡單的變化。屬性動畫的默認時
本篇隨筆將講解一下Android當中比較常用的兩個布局容器--ScrollView和HorizontalScrollView,從字面意義上來看也是非常的簡單的,Scrol