最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android通過(guò)ConnectivityManager檢查網(wǎng)絡(luò)狀態(tài)

 更新時(shí)間:2016年08月04日 11:37:52   投稿:lijiao  
這篇文章主要為大家詳細(xì)介紹了Android通過(guò)ConnectivityManager檢查網(wǎng)絡(luò)狀態(tài)的相關(guān)資料,感興趣的小伙伴們可以參考一下

在開(kāi)發(fā)android應(yīng)用時(shí),涉及到要進(jìn)行網(wǎng)絡(luò)訪問(wèn),時(shí)常需要進(jìn)行網(wǎng)絡(luò)狀態(tài)的檢查,以提供給用戶必要的提醒。一般可以通過(guò)ConnectivityManager來(lái)完成該工作。
ConnectivityManager有四個(gè)主要任務(wù):
1、監(jiān)聽(tīng)手機(jī)網(wǎng)絡(luò)狀態(tài)(包括GPRS,WIFI, UMTS等)
2、手機(jī)狀態(tài)發(fā)生改變時(shí),發(fā)送廣播
3、當(dāng)一個(gè)網(wǎng)絡(luò)連接失敗時(shí)進(jìn)行故障切換
4、為應(yīng)用程序提供可以獲取可用網(wǎng)絡(luò)的高精度和粗糙的狀態(tài)當(dāng)我們要在程序中監(jiān)聽(tīng)網(wǎng)絡(luò)狀態(tài)時(shí),只要一下幾個(gè)步驟即可:

1、定義一個(gè)Receiver重載其中的onReceive函數(shù),在其中完成所需要的功能,如根據(jù)WIFI和GPRS是否斷開(kāi)來(lái)改變空間的外觀

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、在適當(dāng)?shù)牡胤阶?cè)Receiver,可以在程序中注冊(cè),在onCreate中調(diào)用如下函數(shù)即可:

IntentFilter intentFilter = new IntentFilter();
 intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
 registerReceiver(connectionReceiver, intentFilter); 

3、在適當(dāng)時(shí)取消注冊(cè)Receiver,可以在程序中取消,在onDestroye中調(diào)用如下函數(shù)即可:

if (connectionReceiver != null) {
 unregisterReceiver(connectionReceiver);
 } 

Ps:網(wǎng)上還有很多關(guān)于使用TelephonyManager 的方法的,方法如下(但是我試了好幾次都有問(wèn)題,如每次第一次進(jìn)入一個(gè)Activity時(shí)會(huì)自動(dòng)收到網(wǎng)絡(luò)斷開(kāi)的信號(hào),每次網(wǎng)絡(luò)狀態(tài)改變時(shí)收到多次回調(diào)且狀態(tài)不正確。不知道有什么要注意的地方,求指點(diǎn)!)

final TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 
mTelephonyMgr.listen(new PhoneStateListener(){
@Override
public void onDataConnectionStateChanged(int state) {
switch(state){
case TelephonyManager.DATA_DISCONNECTED://網(wǎng)絡(luò)斷開(kāi)
break;
case TelephonyManager.DATA_CONNECTING://網(wǎng)絡(luò)正在連接
break;
case TelephonyManager.DATA_CONNECTED://網(wǎng)絡(luò)連接上
break;

}

}
}, PhoneStateListener.LISTEN_DATA_CONNECTION_STATE); 

至于第二種方法,本人并沒(méi)有去嘗試過(guò)。第一種方式還是比較好用,如果要程序隱藏在后臺(tái)的話,建議開(kāi)個(gè)service,將BroadcastReceiver注冊(cè)在service,但不要忘了取消注冊(cè)。
在測(cè)試中遇到過(guò)這樣的狀況,將一個(gè)當(dāng)前連接wifi的路由設(shè)備關(guān)閉,但是程序并沒(méi)有捕捉到unconnect network,可能是因?yàn)槭謾C(jī)設(shè)備立刻連接另一個(gè)路由設(shè)備了。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

辽源市| 五指山市| 五大连池市| 锡林浩特市| 天津市| 大余县| 潮州市| 琼中| 宜川县| 桦南县| 双桥区| 布拖县| 嵩明县| 衡南县| 吴江市| 吉木萨尔县| 临沭县| 平和县| 福海县| 资源县| 文安县| 安阳县| 弥勒县| 饶阳县| 拜泉县| 平凉市| 滦平县| 常熟市| 松阳县| 莆田市| 太白县| 昂仁县| 临西县| 翼城县| 同心县| 孟连| 如东县| 安丘市| 始兴县| 廊坊市| 云梦县|