我对 Android 中的 MVP 模式有疑问。我想编写自己的“应用程序核心”,它将为演示者、视图等提供基类。它必须简单、干净且“稳定”。我的想法与 Mosby 所提供的非常相似,我正在努力实现这样的目标:
- 每个Activity都有自己的Presenter、View(与 Activity 通信的接口)、ViewState(保存持久数据的可打包对象)。
当Activity被销毁时:
- 分离视图
- 将 ViewState 保存在包中
- 取消 Presenter 中的所有后台任务(完成后更新视图的任务)
- 销毁演示者
重新创建Activity时:
- 附加视图
- 恢复 ViewState
- 创建 Presenter 的新实例
- 重启已取消的后台任务
除了最后一个问题- “重新启动已取消的后台任务”之外,我几乎完成了所有工作。用一个例子来讨论它会更容易。因此,假设我在演示者中有两种方法(Retrofit 2 调用):
- downloadUsers() - 从 Web 服务器和 onSuccess 更新视图中获取用户数据
- downloadProject() - 从 Web 服务器和 onSuccess 更新视图中获取项目信息
现在,当其中一个调用已启动但尚未完成时,用户正在更改配置。重新创建 Presenter 时,我如何知道应该重新启动其中的哪一个?
我想到的唯一想法是为每个任务创建一个持久的布尔标志,在任务开始时将其设置为true ,在任务完成时设置为false。创建 Presenter 时,我将检查每个标志并重新启动相应的调用。
你怎么看待这件事?如何改进?还有其他想法吗?