如何使用第三方SDK跟踪MVP架构?

时间:2016-03-19 14:32:27

标签: android mvp

我见过很多项目,展示如何在MVP中实现登录,但找不到与Google / Facebook登录相关的任何内容。

在登录流程强烈绑定到Android组件生命周期的情况下,我们该怎么办?我看到MVP的主要好处在于我们构建了一个高于Context的抽象,但是当我们需要遵循Facebook登录流程时,这种抽象将显得过于复杂:您需要注册FacebookCallback CallbackManager,调用logInWithReadPermissions()(将Activity / Fragment传递给它),将onActivityResult()委托给callbackManager,这将触发FacebookCallback的方法。

我的想法是创建像

这样的东西
interface AuthInteractor {
    void doFacebookLogin();
    void doGoogleLogin();
}

其实现将了解Context并初始化GoogleApiClient。它会在Presenter中注入,但是所有这些回调(特别是在Facebook的SDK中)会变得太复杂。在这种情况下省略MVP不是更好吗?

1 个答案:

答案 0 :(得分:2)

我猜你问这个问题是因为你试图将两个“想法”合并到你头脑中的一个“想法”中:

  1. 活动/片段是MVP视图
  2. 第三方SDK依赖于Activity(或至少是Context)以访问应用程序可用的平台资源
  3. 两年前,当我研究Android中的MVP实现时,我偶然发现了类似的问题,我得出结论,解决所有此类问题的唯一方法是放弃将Activity / Fragment视为MVP视图的想法。

    我在这篇文章中发布了对此问题的详细讨论:Why Activities in Android are not UI Elements

    还有一个关于如何在Android中实现更好的MVP的教程:MVP and MVC in Android