android - 实现 MVP 时,在 Android 中保留 Presenter 的最佳做法是什么?

标签 android android-fragments mvp

你是怎么做到的?配置更改时如何保留 Presenter?

另一个问题:是否可以在离开 Fragment/Activity 时保留 Presenter?

我不介意使用 Mosby 或 Nucleus 等 MVP 框架,但我认为 Mosby 的方法并不是最佳方法。根据 SO 上的许多帖子,不应在带有 UI 的 fragment 中使用 Fragment.setRetainInstance(true),也不应将其与 backstack 一起使用。也许有更好的方法?

最佳答案

Nucleus 内部使用静态 map 。实际上 Nucleus 做的更多的是从 Presenter 执行的 Request (rxjava) 到 Presenter 实例的映射。这意味着 nucleus 没有保留 Presenter 实例,而是保留 Request (RxJava) 并将其重新附加到新的 Presenter 实例。

Mosby 2.0 使用保留 Fragments 或 Activity 的 lastNonConfiguration 方法来保留演示者。保留具有 UI 的 fragment 没有错。保留 fragment 的唯一缺点是您不能将它们放在后端堆栈中。 在 Mosby 3.0 中(SNAPSHOT 可用但 Fragment on backstack 尚未实现)所有演示者都将保存在绑定(bind)到托管 Activity 生命周期的 Map 中。这意味着,Presenter 可以保留在 backstack 上用于非重新训练 fragment 。与 Nucleus 相比,它们仅在 Activities 生命周期内保留或由用户从后台堆栈中删除(导航)。此外,这允许 Mosby 3.0 也支持自定义 View (FrameLayout 等)。

is it possible to preserve Presenters when navigating away from Fragment/Activity?

是的,但为什么需要你呢?如果 View 根本不可见,是否真的需要保留演示者?尽管如此,Nucleus 和 Mosby 都可以做到这一点。

关于android - 实现 MVP 时,在 Android 中保留 Presenter 的最佳做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36433862/

相关文章:

java - Android 的 gridview 中的水平滚动和不同尺寸的图像,如 Windows8 App Tiles

Android:如何在顶部滚动 ScrollView

java - Unicenta密码加密

android - 何时在 Activity 或 fragment 中使用多个加载器?

android - Android-播放音频时更改播放按钮的文本

design-patterns - 在 MVP 架构中存储状态的位置

android - Google Auth错误-com.google.android.gms.auth.UserRecoverableAuthException:NeedPermission

android - 在自定义 DialogPreference 中使用支持库 v4 fragment

Android MVP - 如何在 Activity 演示者和 fragment 演示者之间进行通信

java - 使用 MVP 显示对话框