AndroidStudio报错:Caused by: org.greenrobot.eventbus.EventBusException:Subscriber class...

本文介绍了Android Studio中使用EventBus时遇到的错误:Subscriber已经注册到特定事件。错误原因是活动在没有正确注销EventBus的情况下被多次注册。解决办法是在onStart()方法中加入对EventBus是否已注册的检查,确保不会重复注册。同时,提供了Activity生命周期的参考,帮助理解何时应该进行EventBus的注册和注销操作。
摘要由CSDN通过智能技术生成

AndroidStudio报错如下:

Caused by: org.greenrobot.eventbus.EventBusException: 
Subscriber class com.money.book.ui.detail.DetailActivity 
already registered to event class com.money.book.bean.event.InfoRefreshNotifyEvent

原因:
Subscriber class … already registered to event…就是说接收者类已经被注册为事件类了。
Android使用eventbus去注册事件的时候,在没有注销的情况下,一个页面只能注册一次eventbus。
AndroidStudio报以上错误,说明eventbus已经注册过了,不能重复注册。
解决:
注意看eventbus有没有在一个页面重复注册多次。
特别是eventbus是否在onStart()方法中注册,因为onStart()方法会在onCreate()后调用一次,在onRestart()后又调用一次,所以会出现eventbus重复注册的情况。如果非要在onStart()中注册eventbus,可以加上对eventbus是否注册的判断。

	@Override
    protected void onStart() {
        super.onStart();
        if(!EventBus.getDefault().isRegistered(this)){//是否注册eventbus的判断
            EventBus.getDefault().register(this);
        }
    }

最后,附上Acitvity的生命周期。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值