Android监听网络变化
16lz
2021-01-23
注册方式:
1.
<receiver android:name="包名.ConnectionChangeReceiver" android:label="NetworkConnection" > <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter></receiver>
2.
/* * 手动注册网络状态变化,或在清单文件配置。 */private void registerNetStateReceiver() {Log.i("--bxm register netstate receiver...");mConnectivityReceiver = new ConnectionChangeReceiver();IntentFilter filter = new IntentFilter();filter.addAction(android.net.ConnectivityManager.CONNECTIVITY_ACTION);registerReceiver(mConnectivityReceiver, filter);}
其中ConnectionChangeReceiver类为:
public class ConnectionChangeReceiver extends BroadcastReceiver {private final static NetConnectionStateMgr dataStateMgr = NetConnectionStateMgr.getInstance();@Overridepublic void onReceive(Context context, Intent intent) {Log.i("--ConnectivityReceiver.onReceive()...");String action = intent.getAction();Log.i("--action=" + action);ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();if (networkInfo != null) {Log.i("--Network Type = " + networkInfo.getTypeName());Log.i("--Network State = " + networkInfo.getState());if (networkInfo.isConnected()) {Log.i("--bxm Network connected");dataStateMgr.setDataState(NetConnectionStateMgr.DATA_CONNECTIONED);}} else {Log.e("--bxm Network unavailable");dataStateMgr.setDataState(NetConnectionStateMgr.DATA_CONNECTION_UNAVAILABLE);}dataStateMgr.notifyDataSetChanged();}}
上面的NetConnectionStateMgr是自己实现的观察者类,方便用而已。
注意权限配置:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
更多相关文章
- 【Android 清单文件下的 Activity各种配置详解】
- C#中Observer观察者模式解决牛顿童鞋成绩问题的实例
- C#中Observer观察者模式如何解决牛顿童鞋成绩问题的方法
- Go 1.15 版本的优化清单【总结】
- 从一份配置清单详解Nginx服务器配置
- 一看就懂【来自英雄联盟盖伦的怒吼】与 Python 详解设计模式(二)观
- webpack4.0正式版重大更新与特性详细清单
- pub哥的2020文章清单
- 设计模式之观察者模式