2017-04-06 35 views
-1

我在一个活动中注册了事件总线,如 - EventBus.getDefault.register(this);公共事件总线实例

但现在我想取消注册到另一个activity.So如何实现它?

+0

可能重复[是事件总线注销必要](http://stackoverflow.com/questions/30486497/is-an-event-bus-unregister-必要) –

+0

您可以使用相同的注册活动进行注销在不同的活动中,如果你有参考注册活动。但建议取消注册onPause状态的活动。否则会导致内存泄漏。 – Krish

+0

@克里希你能给我一个简单的例子吗? – sanil

回答

1

但现在我想取消注册到另一个活动。

您不能取消注册其他活动,因为它没有注册。您必须取消注册您注册的同一个对象。通常onResume()/onPause()是处理它的好地方。

+0

但是当我从后台删除我的应用程序时,我应该如何注销该相应活动的事件总线,因为我将它注册到onStart()并在onDestroy()方法中取消注册它? – sanil

+0

这听起来很糟糕的设计。当你在后台登记时,你需要注册哪些活动?用户可能永远不会回到它,所以没有意义。 –

+0

不,我在启动器活动中创建了一个Subscriber方法,我需要在其他活动中通过事件发布来调用,这就是为什么我在onDestroy()而不是OnPause()中注销事件总线的原因。我应该注销那个事件总线吗? – sanil