在EventBus中侦听事件的活动

时间:2014-02-27 11:40:45

标签: android android-activity asynchronous android-lifecycle greenrobot-eventbus

我有一个活动,其中包含从异步HTTP请求接收的对象的视图。我正在使用EventBus向对象发布事件,并在活动中发布以下方法:

public void onEventMainThread(MyObjectEvent event) {
    EventBus.getDefault().unregister(this);
    showMyObject(event.getMyObject());
}

以前,我已在onCreate()方法中注册了活动的实例:

EventBus.getDefault().register(this);

我知道Android中的Activity生命周期,我认为我使用EventBus的方式不对,因为我正在注册一个可能被Android破坏的实例。我并不热衷于注册具有此类行为的实例。

我可以使用每个onEvent()方法注册一个Application实例或一个对象,但我会编写一个God对象。

通过验证getStickyEvent(MyObjectEvent)为null然后注册活动,是否可以使用粘性事件?如果不是null,我会注册活动。

我想知道在Android中使用带有视图的EventBus的最佳方法是什么。 在此先感谢;)

1 个答案:

答案 0 :(得分:6)

如果您注册onCreate,请考虑在onDestroy中取消注册。

另外,请查看registerSticky,它会立即发送一个事件。