多个活动/片段和模型视图Presenter模式

Mar*_*een 8 mvp android design-patterns android-fragments android-activity

首先,我知道使用Model View Presenter有不同的实现,在我看来,只要你清楚地定义了抽象层并完成了他们指定的角色,那么你如何实现这种模式是开放的解释.我在很多只有一个应用程序的应用程序中实现了这种模式Activity.我现在已经开始了一个具有多个活动并附加的新项目Fragments,包括嵌套片段(ViewPager).

我现在正试图将MVP翻译成这个项目,我已经打了一个概念墙,想要一些指导和见解.

到目前为止,我已经创建了上述结构,开始做一个1:查看&主讲人(不管1的关系ActivityFragment).我觉得这没关系,但是例如我发送了一个请求从ActivityView向其Presenter 做了一些事情,它将结果返回到ActivityView我将如何传播结果,即更新所有其他活动/片段目前不在Paused()Stop()州.我觉得在这种情况下应该有一个中央Presenter更新所有必要的Activity和Fragment Views,但我不知道如何去做.

目前,当每个ActivityFragment创建它时,它创建一个Presenter类的新实例,将其自身作为引用传递(活动和片段实现它们自己的接口),演示者将其存储为a,WeakReference并在返回结果时调用相关的接口方法.

根据文档,每当Fragments想要彼此通信和附加时,Activity您应该使用回调接口.考虑到这一点,我应该有一个回调接口,该活动器具和Fragments回调时,他们要求的东西,所以在本质上只是活动将有一个片段具有回调,以便使各种请求演示和模型层?

对不起,如果这听起来有点混乱,希望这足以清楚地了解我想要达到的目标,如果我正在思考正确的方向......或者完全不合适!

Gen*_*kin 1

我认为在活动中有一位主持人是可以的。基本上,活动就像一个控制器,它应该了解演示者。

如果 Activity 或其他片段也需要演示者,那么将演示者放入片段中是错误的。仅当演示器是专门为片段设计的时,您才可以将演示器放入片段中。

Presenter 将其存储为 WeakReference,并在返回结果时调用相关接口方法

为什么需要WeakReference这里?如果您具有 1:1 关系,那么我假设您的演示者没有自己的生命周期,这意味着它的生命周期取决于 Activity 或 Fragment。因为它不是单例,所以不存在内存泄漏的风险,对吗?有一个强有力的参考应该是安全的。

我不确定我是否回答了你的问题,因为它对我来说有点宽泛。我的观点是,片段只是活动的独立“部分”,您应该将它们视为部分。如果 Presenter 只属于这个部分,那么它应该在里面。否则它应该处于活动状态。您关于使用interface访问活动的说法是正确的,这是 Google 在其示例中使用的一种众所周知的设计方法。