【发布时间】:2014-07-11 12:59:11
【问题描述】:
Model-View-Presenter (MVP) 是一种众所周知的 GUI 应用程序设计模式。对于 Android,在纯 Java 模块中实现业务逻辑有助于测试,而无需 Android 模拟器。
但是,由于对 Android 应用程序的 GUI 有特殊要求,我在 Android 上实现该模式时遇到了困难:
-
一个 Activity 可能在任何时候被销毁(来电,用户按下主页按钮,......),并且在重新创建时它应该处于与离开时完全相同的状态。这与大多数其他 GUI 应用程序不同。
-
一个 Activity 可以经历许多生命周期状态。它可能会暂停,在这种情况下不应修改 Activity 的 UI。例如,如果某些数据正在后台加载,如果它处于暂停状态,则无法将其传递到 MVP(Activity)的 View 部分。同样,这是一个不寻常的要求。
我已阅读博客文章 MVP for Android 并查看了 example source code。我试图通过使用 MVP 模式实现的最终目标是能够使用转译器 j2objc 将所有业务逻辑转换为 Objective-C,以便在 iOS 上实现相同的应用程序时可以重用业务逻辑。
有没有人成功地为 Android 实现了 MVP 模式,在这种情况下,我缺少什么?
【问题讨论】:
-
我想知道的是:如果您的业务逻辑模块是纯 java 而不需要
Context,为什么您的Activity-lifecycle 很重要?换句话说,为什么这些特殊的 GUI 要求会成为问题? -
如果 MVP 的
View部分在某些点(暂停时)可能不会更新,Presenter或Model应该不知道吗?不应该创建Model以便以后可以恢复它吗? -
有人可能会争辩说,Activity 负责管理生命周期并根据需要设置/暂停/拆除演示者。演示者对您的系统相关 UI 框架的怪癖一点也不明智。
标签: android android-activity mvp j2objc