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

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

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

2019-12-12 02:44:43
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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

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

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

步驟:

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

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

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

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

上代碼:

/**  *  * @author cj 判斷網(wǎng)絡(luò)工具類(lèi)  *  */ public class NetUtil {   /**    * 沒(méi)有連接網(wǎng)絡(luò)    */   private static final int NETWORK_NONE = -1;   /**    * 移動(dòng)網(wǎng)絡(luò)    */   private static final int NETWORK_MOBILE = 0;   /**    * 無(wú)線網(wǎng)絡(luò)    */   private static final int NETWORK_WIFI = 1;   public static int getNetWorkState(Context context) {     // 得到連接管理器對(duì)象     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     // 如果相等的話就說(shuō)明網(wǎng)絡(luò)狀態(tài)發(fā)生了變化     if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {       int netWorkState = NetUtil.getNetWorkState(context);       // 接口回調(diào)傳過(guò)去狀態(tài)的類(lèi)型       evevt.onNetChange(netWorkState);     }   }   // 自定義接口   public interface NetEvevt {     public void onNetChange(int netMobile);   } } 

記得在manifest中注冊(cè) 

<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ò)類(lèi)型    */   private int netMobile;   @Override   protected void onCreate(Bundle arg0) {     // TODO Auto-generated method stub     super.onCreate(arg0);     evevt = this;     inspectNet();   }   /**    * 初始化時(shí)判斷有沒(méi)有網(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)前沒(méi)有網(wǎng)絡(luò)");     //     // }   }   /**    * 網(wǎng)絡(luò)變化之后的類(lèi)型    */   @Override   public void onNetChange(int netMobile) {     // TODO Auto-generated method stub     this.netMobile = netMobile;     isNetConnect();   }   /**    * 判斷有無(wú)網(wǎng)絡(luò) 。    *    * @return true 有網(wǎng), false 沒(méi)有網(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ù)需要做處理   } } 

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

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 石泉县| 高青县| 遵化市| 武冈市| 垣曲县| 岳阳市| 加查县| 斗六市| 溧水县| 临猗县| 灵寿县| 奈曼旗| 石台县| 新巴尔虎右旗| 宣威市| 宝兴县| 湖北省| 东光县| 永善县| 曲阳县| 安塞县| 嘉兴市| 益阳市| 商南县| 东源县| 甘肃省| 沅陵县| 金堂县| 修武县| 贵溪市| 灌云县| 密云县| 车致| 石嘴山市| 大同市| 鞍山市| 通化市| 奉新县| 南昌县| 邵阳市| 内丘县|