关于Android应用的MVP模式的问题

时间:2017-01-13 10:56:27

标签: android facebook-android-sdk android-mvp

我几年来一直在开发Android应用程序。最近我在我的应用程序中使用了MVP架构,经过大量阅读并使用了这个Android10 github repo。

但我对这个MVP架构的问题很少,我正在寻找。请帮助我更好地理解这些。

1)所以我有三个模块app,domain,data。哪些模块主持人会去。在某些应用程序中,他们在域中拥有它但我看到其他一些库在演示文稿或应用程序模块中有这样的https://github.com/android10/Android-CleanArchitecture

2)演示者是否可以使用与Intents,Contexts,SharedPrefs相关的Android相关内容?我不认为这应该发生。

3)数据模块可以与app模块通信,反之亦然或者app模块应该与域模块通信,在术语中执行数据模块上的东西

4)我如何使用MVP架构进行Facebook等社交登录...任何想法或链接解释?我是以下面的方式做到的:

活动:onFBButtonClick() - > presenter.onButtonClick() - > FacebookLoginManager.registerCallback

在此之后,我直接在我onActivityResult(int requestcode, int resultcode, Intent intent)的活动上收到回调。现在根据fb sdk教程我必须打电话给FbCallbackManager.onActivityResult(with all the params)。但我不能在演示者中传递这些信息,因为演示者不应该知道意图(平台特定)的事情。我现在如何致电FbcallbackManager.onActivity()

1 个答案:

答案 0 :(得分:2)

在Android中实施MVP有很多种方法。

我见过的大部分方法都将Activity / Fragment指定为MVP视图。这最初看起来很自然,但是当您尝试将此方案应用于非平凡的应用程序时,会出现太多问题和问题。

在我研究了许多MVP方法(包括你链接的方法)之后,我得出结论,没有活动没有片段应该是MVC视图。

此声明背后的详细原因概述如下:Why Activities are not UI Elements

遵循这个视线,我提出了另一个用于Android应用程序的MVP实现:MVP and MVC Architectures in Android

关于你的问题:

  1. Presenter是"屏幕"
  2. 的一部分
  3. 取决于您选择的MVP方法。我个人认为演示者是活动和片段,因此他们可以依赖Android的组件。
  4. 我认为只有那个git repo的作者才能回答这个问题。
  5. 如果您采用活动/片段作为演示者的心态,您将立即了解如何在不污染MVP视图的情况下进行操作。
  6. 另外,关于FB集成,请参阅我的回答here