2016-04-29 70 views
0

让我们想象一下情况:MVP:如何通知有关更改视图后去重视

  1. 用户点击“登录”按钮,FragmentView)调用Presenter的方法doLogin()
  2. Presenter启动一些异步工作,现在热潮!应用程序已关闭(移至最近的应用程序)
  3. Presenter存活并异步工作仍在进行中。
  4. 异步工作完成,而应用程序在后台。
  5. 用户回来的应用程序,但他没有看到的观点去连接,工作是完成任何通知:

     if(isViewAttached()) { 
          getView().setLoaded(workResult); 
         } 
    

而且我要修复它。我看到的唯一方法是使用Queue<MessageToView>,并且当再次附加View时,执行每个“消息”。

我认为有一个图书馆可以处理我的情况。那么,是吗?或者我可以使用什么样的模式?

回答

1

见GitHub的网页FAQ部分:

演示和视图可以是不同步的屏幕 方向变化时?

优秀的问题。 Mosby认为Presenter 与View的所有交互都发生在Android的主UI线程上。因此,答案是 不可能发生,因为屏幕方向更改也在主UI线程上执行 。因此,无论是一个屏幕方向完全执行 (视图重新连接)或由于在主UI线程都运行视图重新连接或 呈现调用起始屏幕取向 改变之前的观点方法后演示调用视图方法 。

因此,只要您的Presenter调用主UI线程上的View方法,所有的东西都可以直接使用。

1

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

+0

感谢您分享您的想法,但我想只在需要时更新View,而不是每次Fragment恢复。对于这种情况,'Queue '是更优雅的解决方案。因为在那里我可以检查'if(!queue.isEmpty()){* update_view_swith_messages(Runnable)_}'但是我在寻找一个更好的图书馆:) – Alexandr

相关问题