我已经开始使用事件总线库Otto来更新Android应用程序中不同组件的界面(活动)。例如,当对Model类进行更改时,我会发布到事件总线,或者如果AsyncTask
已完成,我会使用onPostExecute
方法将事件发布到事件总线。
到目前为止,我正在使用一个事件总线进行用户界面更新。我注意到即使是暂停的活动也会收到这些事件。在文档中说明
暂停的活动不会收到用户输入,也无法执行任何代码。
我觉得有争议,我只能解释一下,这个代码当然是在不同的线程上执行的,但仍然在活动中。
我的问题是,这种用法会导致任何缺点吗?暂停多个活动,执行事件,更新(暂停)活动的元素或忽略它们。这会导致明显的开销,还是可以忽略它?
当想要使用事件总线更新界面时,是否有不同的方法?
答案 0 :(得分:4)
这会导致明显的开销,还是可以忽略它?
这在摘要中是不可能的。这取决于你正在做什么工作以及你经常做什么。
当想要使用事件总线更新界面时,是否有不同的方法?
当您的活动和片段在后台时,不要求您监听活动。例如,您可以在onResume()
中注册活动,并在onPause()
中取消注册。然后,您可以使用其他技术(例如,Otto' @Producer
模式)更新您的活动&片段的UI en masse onResume()
中的前景。