一:听说你还在用工具类来判断网络状态?垃圾
这样做会有什么问题呢?
首先最直观的,不够优雅,代码判断量太多,如果你的操作是需要频繁的监听网络状态,那么过多的if/ else肯定会让后面维护变的眼花缭乱。
以上方法只能在网络操作之前判断网络状态,若用户在网络正常情况下发起操作而中间改变网络,比如下载中途突然丢失网络,则此时无法做出相应的控制。
无法只针对某种网络类型进行监听,比如只想监听用户切换到 WiFi 网络时做出响应。
程序多处需要进行网络监听处理时,不能同时接收网络变化,必须逐个地方手动处理。
二:它的原理是什么
image.png
我们是通过注册广播来实现绑定网络变更的监听,在Android 7.0 以后,Google 基于性能和安全原因对广播进行了很多限制,比如监听网络变更的广播 android.net.conn.CONNECTIVITY_CHANGE 使用静态注册的方式则无法生效,而动态注册的方式可以生效但毕竟不是最优解。
第一步:废话少说直接上效果图








网友评论