无代码入侵的广播监听

采用 JetPack 技术 (注 在Androidx才可使用)
使用方式

1 添加依赖

  implementation "android.arch.lifecycle:common-java8:1.1.1"

2 创建网络监听类

public class NetWorkStateReceive extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
		//自己实现需要监听的广播
    }
}

3 创建Lifecycle无入侵代码


public class CustomNetworkStateManager implements DefaultLifecycleObserver {
    private static final CustomNetworkStateManager S_MANAGER = new CustomNetworkStateManager();
    private NetWorkStateReceive mNetworkStateReceive;

    private CustomNetworkStateManager() {
    }

    public static CustomNetworkStateManager getInstance() {
        return S_MANAGER;
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
    public void onResume(@NonNull LifecycleOwner owner) {
        if (owner == null) return;
        mNetworkStateReceive = new NetWorkStateReceive();
        IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
        if (owner instanceof AppCompatActivity) {
            ((AppCompatActivity) owner).registerReceiver(mNetworkStateReceive, filter);
        } else if (owner instanceof Fragment) {
            ((Fragment) owner).getActivity().registerReceiver(mNetworkStateReceive, filter);

        }
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
    public void onPause(@NonNull LifecycleOwner owner) {
        if (owner == null) return;
        if (owner instanceof AppCompatActivity) {   //防止空指针   和多余创建
            ((AppCompatActivity) owner).unregisterReceiver(mNetworkStateReceive);
        } else if (owner instanceof Fragment) {
            ((Fragment) owner).getActivity().unregisterReceiver(mNetworkStateReceive);
        }
    }
}

4 注册
在Fragment 或者Activity中使用 (写到BaseActivity或者BaseFragment)

  getLifecycle() .addObserver(CustomNetworkStateManager.getInstance());

5 备注
已经写好了移除监听的操作,并且跟随Activity或者Fragment的生命周期执行,无需关系只需要自己写好广播的筛选和回调就可以了。

6 转载请备注地址,本文是全网首发,如若雷同定法律追究,其原理如果感兴趣抽时间给大家讲。

6.1 如果在别的页面接收不到请把静态单例和所有静态类删除修改下方可


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值