FcfrtNetStatus实现Android网络监听

本文介绍了一个用于Android设备的网络状态监听库,详细说明了如何在Android 7.0及更高版本中使用FcfrtNetworkCallbackImpl类替代广播接收器来监测网络变化。文章提供了在Application中初始化和注册监听器的方法,以及不同网络模式下的监听示例。
摘要由CSDN通过智能技术生成

由于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, "失去网络");
}

源码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值