android-实时监听网络变化的工具类
2014-11-17 10:57
417 查看
1.实现逻辑
广播监听网络变化,通过回调通知网络变化。
2.代码
4.1 实现OnNetChangedListener接口
4.2 实现监听
// 监听网络变化
NetChangeHelper.getInstance(mContext).doCheck(this);
广播监听网络变化,通过回调通知网络变化。
2.代码
public class NetChangeHelper { // private static final String TAG = NetChangeHelper.class.getSimpleName(); private static final String RECEIVER_ACTION = "android.net.conn.CONNECTIVITY_CHANGE"; private static final int WHAT_NET_CHANGED = 0; private static final int TIME_NET_CHANGED = 2800; private Context mContext; private static NetChangeHelper sCheckNetChangeHelper; private BroadcastReceiver mNetReceiver; private Handler mHandler; private final Set<OnNetChangedListener> mListeners; private int mPreNetStatus; // 注册广播时会立马收到消息,这条消息不需要处理 private boolean isFirstReceive = true; private NetChangeHelper(Context context) { this.mContext = context; initHandeler(); initReceiver(); mListeners = new HashSet<NetChangeHelper.OnNetChangedListener>(); } public static NetChangeHelper getInstance(Context context) { if (sCheckNetChangeHelper == null) { init(context); } return sCheckNetChangeHelper; } private synchronized static void init(Context context) { if (sCheckNetChangeHelper == null) { sCheckNetChangeHelper = new NetChangeHelper(context); } } public void doCheck(OnNetChangedListener onNetChangedListener) { mListeners.add(onNetChangedListener); } private void initReceiver() { mNetReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { final String action = intent.getAction(); if (RECEIVER_ACTION.equals(action)) { if (isFirstReceive) { isFirstReceive = false; return; } if (mHandler.hasMessages(WHAT_NET_CHANGED)) { int curNet = NetUtil.checkNet(context); if (curNet != mPreNetStatus) { mHandler.removeMessages(WHAT_NET_CHANGED); mHandler.sendEmptyMessageDelayed(WHAT_NET_CHANGED, TIME_NET_CHANGED); } } else { mPreNetStatus = NetUtil.checkNet(context); mHandler.sendEmptyMessageDelayed(WHAT_NET_CHANGED, TIME_NET_CHANGED); } } } }; IntentFilter filter = new IntentFilter(); filter.addAction(RECEIVER_ACTION); mContext.registerReceiver(mNetReceiver, filter); } private void initHandeler() { mHandler = new Handler(Looper.getMainLooper()) { @Override public void handleMessage(Message msg) { if (msg.what == WHAT_NET_CHANGED) { handle(); } } }; } private void handle() { callBack(); } private void callBack() { Iterator<OnNetChangedListener> iterator = mListeners.iterator(); while (iterator.hasNext()) { OnNetChangedListener netChangedListener = (OnNetChangedListener) iterator .next(); if (netChangedListener != null) { netChangedListener.onNetChanged(); } } } public interface OnNetChangedListener { void onNetChanged(); } }3.权限
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />4.使用
4.1 实现OnNetChangedListener接口
4.2 实现监听
// 监听网络变化
NetChangeHelper.getInstance(mContext).doCheck(this);
相关文章推荐
- Android 实时监测(监听)网络连接状态变化
- android 网络实时监听网络状态变化 及 网络类型判断
- Android 实时监测(监听)网络连接状态变化
- Android 注册广播,实时监听网络连接与断开状态变化
- Android 实时监测(监听)网络连接状态变化
- Android 实时监测(监听)网络连接状态变化
- Android 实时监测(监听)网络连接状态变化
- Android 通过注册广播,实时监听网络连接与断开状态的变化
- Android实时监听是否有网络,常驻广播——监测网络变化
- Android 实时监测(监听)网络连接状态变化
- 【Android 】注册广播,实时监听网络连接与断开状态变化
- 【android】解决方案--用BroadcastReceiver监听手机网络状态变化
- android接收广播监听网络状态变化
- android监听网络变化
- Android监听网络的变化
- Android利用广播监听设备网络连接(断网)的变化情况
- android网络监听广播遇到网络变化执行多次onRe
- Android 监听网络的变化
- Android实时监听网络状态(2)
- Android监听WIFI网络的变化并且获得当前信号强度