使用事件总线更新界面的缺点?

时间:2014-06-20 12:14:24

标签: java android multithreading android-activity otto

我已经开始使用事件总线库Otto来更新Android应用程序中不同组件的界面(活动)。例如,当对Model类进行更改时,我会发布到事件总线,或者如果AsyncTask已完成,我会使用onPostExecute方法将事件发布到事件总线。

到目前为止,我正在使用一个事件总线进行用户界面更新。我注意到即使是暂停的活动也会收到这些事件。在文档中说明

  

暂停的活动不会收到用户输入,也无法执行任何代码。

我觉得有争议,我只能解释一下,这个代码当然是在不同的线程上执行的,但仍然在活动中。

我的问题是,这种用法会导致任何缺点吗?暂停多个活动,执行事件,更新(暂停)活动的元素或忽略它们。这会导致明显的开销,还是可以忽略它?

当想要使用事件总线更新界面时,是否有不同的方法?

1 个答案:

答案 0 :(得分:4)

  

这会导致明显的开销,还是可以忽略它?

这在摘要中是不可能的。这取决于你正在做什么工作以及你经常做什么。

  

当想要使用事件总线更新界面时,是否有不同的方法?

当您的活动和片段在后台时,不要求您监听活动。例如,您可以在onResume()中注册活动,并在onPause()中取消注册。然后,您可以使用其他技术(例如,Otto' @Producer模式)更新您的活动&片段的UI en masse onResume()中的前景。