由于Android 在7.0以后出于性能及安全的考虑对广播做了大量的限制,监听网络连接的广播在7.0以后的系统上也只有动态注册才能生效。 本库出于性能考虑决定使用 FcfrtNetworkCallbackImpl 类来代替广播实现网络状态变化监听。因此需要您将minSdkVersion 升级为21及以上。

如果确实需要满足在 Android 5.0 以下机型中进行运行,请联系我,我者会根据反馈考虑是否重新加入广播进行监听网络事件。

进入主题

  1. Application 中初始化 FcfrtNetStatusBus:

 // 尽可能早的进行这一步操作, 建议在 Application 中完成初始化操作 FcfrtNetStateBus.getInstance().init(this);
  1. 根据你的生命周期来注册和注销订阅者,例如:

 @Override public void onStart() {     super.onStart();     FcfrtNetStateBus.getInstance().register(this); } @Override public void onStop() {     super.onStop();     FcfrtNetStateBus.getInstance().unregister(this); }
  1. 声明你的订阅方法,在该方法中可以监听到网络状态的变更: 比如想要监听 wifi 连接的情况

@FcfrtNetSubscribe(mode = Mode.WIFI_CONNECT)    fun wifiChange() {        runOnUiThread {            tv_type.text = "wifi模式"            iv_type.setImageResource(R.drawable.ic_wifi)        }    }

注意事项

订阅方法可以选填一个NetType参数,可以通过NetType的值来判断当前网络类型。

@FcfrtNetSubscribe 中可以指定 mode 用来设置订阅的模式,mode类型如下:

Mode.AUTO

这是默认值,任何网络状态发生变化,该类型订阅者都会被调用。

//所有网络变化都会被调用,可以通过 NetType 来判断当前网络具体状态@FcfrtNetSubscribe(mode = Mode.AUTO)public void netChange(NetType netType) {    Log.d(Constrants.LOG_TAG, netType.name());}

Mode.WIFI

由 WIFI 改变引发的网络状态变化的情况下(wifi连接和断开),该类型订阅者会被调用。

// 当 wifi 连接和失去连接时都被调用@FcfrtNetSubscribe(mode = Mode.WIFI)public void wifiChange(NetType netType) {    Log.d(Constrants.LOG_TAG, netType.name());}

Mode.WIFI_CONNECT

仅在 WIFI 成功连接后,该类型订阅者会被调用。

// 只有当 wifi 连接时都被调用@FcfrtNetSubscribe(mode = Mode.WIFI_CONNECT)public void wifiChange() {    Log.d(Constrants.LOG_TAG, "连接到wifi网络");}

Mode.MOBILE

由移动网络改变引发的网络状态变化的情况时(移动网络连接和断开),该类型订阅者会被回调。

// 当移动网络连接和失去连接时都会被调用@FcfrtNetSubscribe(mode = Mode.MOBILE)public void netChange(NetType netType) {    Log.d(Constrants.LOG_TAG, netType.name());}

Mode.MOBILE _CONNECT

仅在移动网络成功连接后,会被回调。

// 当移动网络连接时调用@FcfrtNetSubscribe(mode = Mode.MOBILE _CONNECT)public void netChange() {    Log.d(Constrants.LOG_TAG, "连接到移动网络");}

Mode.NONE

只有当网络丢失时,该类型订阅者才会被回调。

// 只有当网络丢失时,该类型订阅者才会被回调。@FcfrtNetSubscribe(mode = Mode.NONE)public void netChange() {    Log.d(Constrants.LOG_TAG, "失去网络");}

源码

更多相关文章

  1. Android移动应用开发_通过USB连接安卓手机
  2. Android之旅十五 android中的网络操作
  3. Android仿人人客户端(v5.7.1)——网络模块处理的架构
  4. Android(安卓)网络连接——WebView
  5. Android(安卓)WiFiDirect 一个jar包搞定一切
  6. 相对布局解析以及Android(安卓)studio 连接夜神模拟器
  7. android网络打印 生成pdf
  8. Android性能优化——优化下载以高效地访问网络
  9. Android获取本机IP地址

随机推荐

  1. Android打电话过程
  2. cocos2d怎么设置屏幕朝向?横屏 or 竖屏设
  3. Android系统java层次service实现
  4. Android音频系统学习笔记
  5. 判断是否获取了悬浮窗权限
  6. Android中抛出android.app.Fragment$Inst
  7. (4.1.1)Android(安卓)ActionBar完全解析,使
  8. 三、数据库入门和listview的基本使用
  9. 自定义Spinner下拉列表
  10. 布局中@null的代码实现方式