假设我们的应用程序有3个活动:A,B和C.只有A在onStart()
注册到EventBus,并在onStop()
注册here,并且它有一个事件处理程序方法:onEvent(X event){...}
,在收到事件X后将用户导航到C.
但请看下面的不愉快情景:
onEvent(X
event){...}
)立即将用户导航到活动C. 这是一种奇怪的用户体验,我们怎样才能避免在再次注册时将事件传递给A?
一种解决方案是在onStop()
取消正在进行的后台操作,以便永远不会触发该事件;但是,取消后台操作可能并非总是可行。
我正在使用GreenRobot的EventBus。
答案 0 :(得分:0)
您可以使用Bus
例如,您的活动中有一个static int
字段,并且每次为该活动注册Bus
时都会增加该字段,并在初始化后台任务时,将该计数器传递给您的任务并在它完成了。然后在您的事件处理程序中,使用您的计数器的当前值检查该值,如果它们不相同,则不执行任何操作。
答案 1 :(得分:0)
我不确定这里的预期行为是什么,当用户在A并且后台任务完成时应用程序应该做什么?忽略这个事件?
在任何情况下,我都会使用事件有效负载(您可以使用自己的有效负载定义Event类)来控制工作流,例如,在处理程序中检查是否应该忽略该事件。