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

ans*_*hul 6 android facebook-android-sdk android-mvp

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

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

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

2)演示者可以使用Android相关的内容,如Intents,Contexts,SharedPrefs等吗?我不认为这应该发生.

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()

Vas*_*liy 2

在 Android 中实现 MVP 有多种方法。

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

在我研究了许多 MVP 方法(包括您链接的方法)之后,我得出的结论是 Activity 和 Fragment 都不应该是 MVC 视图。

此声明背后的详细推理总结如下:为什么 Activity 不是 UI 元素

沿着这个思路,我提出了 Android 应用程序的 MVP 的另一种实现:Android 中的 MVP 和 MVC 架构

至于你的问题:

  1. 演示者是“屏幕”的一部分
  2. 取决于您选择哪种 MVP 方法。我个人认为Presenter是Activity和Fragments,因此它们可以依赖于Android的组件。
  3. 我认为只有 git repo 的作者才能回答这个问题。
  4. 如果您采用 Activity/Fragment 作为演示者的思维方式,您将立即了解如何在不污染 MVP 视图的情况下做到这一点。

另外,关于FB整合,请看我的回答这里的回答。