6

几年来我一直在开发安卓应用程序。最近,我在我的应用程序中使用了 MVP 架构,并且在阅读了很多内容并使用了这个Android10 github repo 之后。

但是对于我正在寻找的这个 MVP 架构,我几乎没有什么疑问。请帮助我更好地理解这些。

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

2 ) 演示者可以拥有 android 相关的东西,如 Intents、Contexts、SharedPrefs 等吗?我认为这不应该发生。

3)数据模块可以与应用程序模块对话,反之亦然或者应用程序模块应该与域模块对话,后者在数据模块上执行事物

4)我怎样才能像Facebook一样使用MVP架构进行社交登录......有什么想法或链接可以解释吗?我已经通过以下方式做到了:

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

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

4

1 回答 1

2

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

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

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

此处总结了此声明背后的详细原因:为什么活动不是 UI 元素

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

至于你的问题:

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

另外,关于 FB 集成,请在此处查看我的回答。

于 2017-01-13T15:52:57.243 回答