android-实时监听网络变化的工具类
来源:互联网 发布:微信公众号开发框架php 编辑:程序博客网 时间:2024/05/29 16:23
1.实现逻辑
广播监听网络变化,通过回调通知网络变化。
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() {@Overridepublic 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()) {@Overridepublic 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);
0 0
- android-实时监听网络变化的工具类
- 用Reachability实时监听网络的变化
- Android监听网络的变化
- Android监听网络的变化
- Android监听网络的变化
- Android 监听网络的变化
- Android 监听网络的变化
- Android 实时监测(监听)网络连接状态变化
- Android 实时监测(监听)网络连接状态变化
- Android 实时监测(监听)网络连接状态变化
- Android 实时监测(监听)网络连接状态变化
- Android 通过注册广播,实时监听网络连接与断开状态的变化
- Android监听网络变化
- Android 监听网络变化
- Android监听网络变化
- Android--监听网络变化
- android 监听网络连接状态的变化
- Android 监听网络状态的变化
- 地柜函数实现二进制数
- 第11周 项目二 (1) 求两个数最大公约数
- 第十二周 项目二 (1)求多组数的最大公约数
- XHR2:让使用纯JS实现上传进度条变成了可能
- Unpack Png Files From The Plist File
- android-实时监听网络变化的工具类
- 时间设置对话框 DatePickerDialog的使用
- 在升级最新discuzX3.1-X3.2之后验证码不显示解决方法
- sql基本语句
- [manacher] hdu 3294 Girls' research
- sqlmap源码阅读笔记---LOGGER
- Android 实现界面之间的转跳
- 第12周项目3-用递归方法求解(1)
- 第12周项目2-(2)分离正整数中的各位数