0

让我们想象一下情况:

  1. 用户单击“登录”按钮和Fragment( View) 调用Presenter方法doLogin()
  2. Presenter开始一些异步工作,现在Boom!应用已关闭(移至最近的应用)
  3. Presenter幸存下来,异步工作仍在进行中。
  4. 应用在后台时完成异步工作。
  5. 用户返回应用程序,但由于视图已取消附加,他没有看到任何工作已完成的通知:

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

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

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

4

2 回答 2

1

请参阅 github 页面常见问题解答部分:

在屏幕方向更改期间,Presenter 及其视图是否会不同步?

很好的问题。Mosby 假设 Presenter 与 View 的所有交互都发生在 android 的主 UI 线程上。因此答案是否定的,因为屏幕方向更改也在主 UI 线程上执行。因此,要么是完全执行屏幕方向(重新附加视图),要么是演示者在重新附加视图后调用视图方法,因为两者都在主 UI 线程上运行,或者演示者在开始更改屏幕方向之前调用视图方法。

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

于 2016-04-30T14:05:44.997 回答
1

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

于 2016-04-29T00:59:55.243 回答