我使用Greenrobot EventBus将事件从一个活动传递到另一个活动。
流程大致如下:活动1开始-〉扫描条形码-〉活动2开始-〉接受或拒绝响应并向活动1发送事件。
因此,练习2通过执行以下操作向练习1发送一个新事件:
@Override
public void onCreate(){
EventBus.getDefault().register(this);
// other initialization code
EventBus.getDefault().post(new MyEvent());
}
在练习1中,我注册了事件总线,并且使用了用于接收事件的公共onEvent(MyEvent myEvent)方法。
问题是onEvent没有被触发。我看了看事件总线对象可能有问题(比如不同的示例或者活动1和2中的某个),但是它; It“是同一个例子。
我不知道问题出在哪里,如果有人能看一看,告诉我哪里做错了,我会非常感激。
谢谢!
5条答案
按热度按时间ubby3x7f1#
在这种情况下,您可能需要使用粘滞事件。当Activity1启动Activity2后,它将进入后台,并且不再接收任何事件。
将其放入活动1中,而不是EventBus. getDefault(). register(对象事件)
并取代了
在练习2中
Here is a link to the documentation explaining it
qlzsbp2j2#
您的Activity1 EventBus取消注册是什么样子的?
我有同样的问题,因为我这样做:
这样做的问题是,当您启动Activity2时
onStop
会得到调用,因此会删除对事件的订阅。我可以通过将取消注册移动到onDestroy来解决这个问题,因此:cgvd09ve3#
分类测验
活动A**
活动B
vlju58qv4#
在接收粘滞事件的新版本中,设置
sticky
标志true
:50few1ms5#
发生这种情况的原因是,在开始()时,您注册了eventBus,然后进入了下一个Activity...因此,从技术上讲,事件总线已经在上一个Activity中注册...因此,当您返回到同一个Activity时,事件总线将使应用程序崩溃,因为它已经假定您已经注册了...
因此,为了解决这个问题,尝试调用,对活动,以防止它崩溃!
}