国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android 實(shí)時(shí)監(jiān)測(監(jiān)聽)網(wǎng)絡(luò)連接狀態(tài)變化

2019-10-22 23:17:07
字體:
供稿:網(wǎng)友

看了網(wǎng)上的很多,都不是自己想要的。所以自己就參考著寫了一個(gè)。

實(shí)現(xiàn)這個(gè)的方法很多,我是想的這種,如果哪有不足,有bug的地方希望大家指出,共同進(jìn)步。。。。

先簡單說一下思路:網(wǎng)絡(luò)變化時(shí)系統(tǒng)會(huì)發(fā)出廣播。所以我們監(jiān)聽這個(gè)廣播,利用接口回調(diào)通知activity做相應(yīng)的操作就好了。。

步驟:

           1、寫個(gè)判斷網(wǎng)絡(luò)的工具類.

           2、先寫個(gè)類繼承BroadcastReceiver。(不要忘記在清單文件中注冊)
          (謝謝ITzxl的提醒)需要在清單文件中添加權(quán)限<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>

           3、寫個(gè)回調(diào)接口

           4、BaseActivity實(shí)現(xiàn)這個(gè)接口

上代碼:

/**  *  * @author cj 判斷網(wǎng)絡(luò)工具類  *  */ public class NetUtil {   /**    * 沒有連接網(wǎng)絡(luò)    */   private static final int NETWORK_NONE = -1;   /**    * 移動(dòng)網(wǎng)絡(luò)    */   private static final int NETWORK_MOBILE = 0;   /**    * 無線網(wǎng)絡(luò)    */   private static final int NETWORK_WIFI = 1;   public static int getNetWorkState(Context context) {     // 得到連接管理器對象     ConnectivityManager connectivityManager = (ConnectivityManager) context         .getSystemService(Context.CONNECTIVITY_SERVICE);     NetworkInfo activeNetworkInfo = connectivityManager         .getActiveNetworkInfo();     if (activeNetworkInfo != null && activeNetworkInfo.isConnected()) {       if (activeNetworkInfo.getType() == (ConnectivityManager.TYPE_WIFI)) {         return NETWORK_WIFI;       } else if (activeNetworkInfo.getType() == (ConnectivityManager.TYPE_MOBILE)) {         return NETWORK_MOBILE;       }     } else {       return NETWORK_NONE;     }     return NETWORK_NONE;   } } /**  * 自定義檢查手機(jī)網(wǎng)絡(luò)狀態(tài)是否切換的廣播接受器  *  * @author cj  *  */ public class NetBroadcastReceiver extends BroadcastReceiver {   public NetEvevt evevt = BaseActivity.evevt;   @Override   public void onReceive(Context context, Intent intent) {     // TODO Auto-generated method stub     // 如果相等的話就說明網(wǎng)絡(luò)狀態(tài)發(fā)生了變化     if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {       int netWorkState = NetUtil.getNetWorkState(context);       // 接口回調(diào)傳過去狀態(tài)的類型       evevt.onNetChange(netWorkState);     }   }   // 自定義接口   public interface NetEvevt {     public void onNetChange(int netMobile);   } } 

記得在manifest中注冊 

<receiver android:name="cn.broadcastreceiver.NetBroadcastReceiver" >       <intent-filter>         <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />       </intent-filter>     </receiver> abstract public class BaseActivity extends FragmentActivity implements NetEvevt {   public static NetEvevt evevt;   /**    * 網(wǎng)絡(luò)類型    */   private int netMobile;   @Override   protected void onCreate(Bundle arg0) {     // TODO Auto-generated method stub     super.onCreate(arg0);     evevt = this;     inspectNet();   }   /**    * 初始化時(shí)判斷有沒有網(wǎng)絡(luò)    */   public boolean inspectNet() {     this.netMobile = NetUtil.getNetWorkState(BaseActivity.this);     return isNetConnect();     // if (netMobile == 1) {     // System.out.println("inspectNet:連接wifi");     // } else if (netMobile == 0) {     // System.out.println("inspectNet:連接移動(dòng)數(shù)據(jù)");     // } else if (netMobile == -1) {     // System.out.println("inspectNet:當(dāng)前沒有網(wǎng)絡(luò)");     //     // }   }   /**    * 網(wǎng)絡(luò)變化之后的類型    */   @Override   public void onNetChange(int netMobile) {     // TODO Auto-generated method stub     this.netMobile = netMobile;     isNetConnect();   }   /**    * 判斷有無網(wǎng)絡(luò) 。    *    * @return true 有網(wǎng), false 沒有網(wǎng)絡(luò).    */   public boolean isNetConnect() {     if (netMobile == 1) {       return true;     } else if (netMobile == 0) {       return true;     } else if (netMobile == -1) {       return false;     }     return false;   } } public class MainActivity extends BaseActivity {   @Override   protected void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.activity_main);     } @Override   public void onNetChange(int netMobile) {     // TODO Auto-generated method stub     //在這個(gè)判斷,根據(jù)需要做處理   } } 

在這需要說明一下,手機(jī)在開著wifi長時(shí)間不用,自動(dòng)黑屏長時(shí)間,會(huì)關(guān)閉流量,所以在下拉刷新的時(shí)候,把監(jiān)測狀態(tài)的提升語給隱藏了!

android,監(jiān)聽網(wǎng)絡(luò)狀態(tài)

 


注:相關(guān)教程知識(shí)閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 定安县| 滕州市| 犍为县| 武定县| 南江县| 如皋市| 巴林右旗| 田林县| 出国| 徐州市| 乌兰察布市| 肇源县| 北流市| 洪泽县| 酉阳| 木里| 沽源县| 三门峡市| 巴中市| 余江县| 西乌珠穆沁旗| 玉龙| 九江县| 察隅县| 临海市| 海伦市| 蛟河市| 普格县| 肃南| 濮阳县| 城步| 怀仁县| 商水县| 广河县| 禄劝| 西乌珠穆沁旗| 广宗县| 民县| 南雄市| 郧西县| 资源县|