MVP:如何在取消附加后通知有关更改的视图

时间:2016-04-29 00:50:38

标签: android mvp mosby

让我们想象一下情况:

  1. 用户点击'登录'按钮和FragmentView)致电Presenter的方法doLogin()
  2. Presenter启动了一些异步工作,现在 Boom!应用已关闭(转移到最近的应用)
  3. Presenter幸存,异步工作仍在进行中。
  4. 当应用在后台时,异步工作已完成。
  5. 用户回到应用程序,但他没有看到任何通知工作已完成,因为视图已取消附加:

            if(isViewAttached()) {
                getView().setLoaded(workResult);
            }
    
  6. 我想解决它。我看到的唯一方法是使用Queue<MessageToView>,当View再次附加时,执行每个&#34;消息&#34;。

    我认为有一个库可以处理我的案例。那么,是吗?或者我可以使用什么模式?

2 个答案:

答案 0 :(得分:1)

尝试使用Fragment的onResume()生命周期方法,然后调用presenter.updateViews()

之类的内容

答案 1 :(得分:1)

请参阅github页面FAQ部分:

  

在屏幕中,Presenter及其视图是否会不同步   方向改变?

     

很好的问题。 Mosby假设所有来自Presenter的互动   随着视图发生在Android的主UI线程上。因此答案是   不会因为执行屏幕方向更改而无法发生   主UI线程也是如此。所以要么是执行了屏幕方向   完全(查看重新连接)或演示者调用视图方法   视图重新连接后,因为它们都在主UI线程上运行   演示者在开始屏幕方向之前调用视图方法   变化

因此,只要您的Presenter在主UI线程上调用View方法,一切都可以开箱即用。