EventBus3.0,Fragment 跳转到外部activity后,从外部activity传值到fragment,无法接收的问题
首先分析一下问题的所在;
通过debug fragment生命周期,我们发现如果我们把 EventBus的注册和注销写在onResume 和onPause中时,那么从外部activity传值过来时,就不会执行EventBus接收方法,因为我们已经注销了;
解决这个问题的办法 有两个
- 把EventBus的注册和销毁 写在onGreate()和onDestroy 中 ,正常的方式使用,前提时 保证EventBus 没有被销毁;
- 如果EventBus 在跳转界面时,销毁,那么只能使用 EventBus粘性事件 , sticky = true这个属性,再发送事件的外部activity 中用 EventBus.getDefault().postSticky();就可以接收到值了
/**
* 事件订阅者自定义的接收方法
*
* @param event
*/
@Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
public void onMessageEvent(EventBusModel event) {
if (event == null) {
return;
}
。。。。。
}