EventBus unregister 取消监听了 Fragment onPause时候又会变成注册状态

操作流程如下图

EventBus unregister 取消监听了 Fragment onPause时候又会变成注册状态_第1张图片

 第一个页面是RecommendFragment,跳转到下个页面是ArticleinfoActivity。两个页面有一部分的功能是一样的,都要走微信支付,都要监听WXPayEntryActivity支付成功的推送(这边就是我写eventbus推送),那么问题就来了,在ArticleinfoActivity支付成功或者失败后,WXPayEntryActivity的推送RecommendFragment,ArticleinfoActivity两个页面都会收到,一开始我以为很简单,只要判断RecommendFragment在执行startActivity的时候把EventBus unregister就可以了,后面发现RecommendFragment还是会监听到,然后我就把Fragment的生命周期的各个方法打印出来

@Override
    public void onPause() {
        super.onPause();
        Log.e("weichongbin666","onPause");
        if (EventBus.getDefault().isRegistered(this)){
            Log.e("weichongbin666","已注册");
        }else{
            Log.e("weichongbin666","未注册");
        }
    }
    @Override
    public void onStart() {
        super.onStart();
        Log.e("weichongbin666","onStart");
        if (!EventBus.getDefault().isRegistered(this)){
            EventBus.getDefault().register(this);
            Log.e("weichongbin666","onStart 已注册");
        }
        if (EventBus.getDefault().isRegistered(this)){
            Log.e("weichongbin666","已注册");
        }else{
            Log.e("weichongbin666","未注册");
        }
    }

    @Override
    public void onStop() {
        super.onStop();
        Log.e("weichongbin666","onStop");
        EventBus.getDefault().unregister(this);
        if (EventBus.getDefault().isRegistered(this)){
            Log.e("weichongbin666","已注册");
        }else{
            Log.e("weichongbin666","未注册");
        }
    }

    @Override
    public void onResume() {
        super.onResume();
        Log.e("weichongbin666","onResume");
    }

发现在onPause的时候eventbus的状态又变成注册了,只能改在onstop的时候取消注册,onstart的时候再注册

但是还是不知道为什么 onpause的时候会又注册了

你可能感兴趣的:(bug)