0

我有一个活动,可以查看从异步 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) 是否为空然后注册活动来使用粘性事件的解决方案是什么?如果不为空,我会注册该活动。

我想知道在 Android 中将 EventBus 与视图一起使用的最佳方法是什么。提前致谢 ;)

4

1 回答 1

6

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

另外,请查看 registerSticky,如果可用,它会立即提供一个事件。

于 2014-03-05T11:43:01.620 回答