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

Yar*_*lav 6 mvp android

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

在登录流程强烈绑定到Android组件生命周期的情况下,我们该怎么办?我看到MVP的主要好处在于我们建立上述的抽象Context,但是当我们需要遵循,例如,Facebook的登录流程这种抽象会显得过于复杂:你需要注册FacebookCallbackCallbackManager,调用logInWithReadPermissions()(传递活动/片段吧)委派onActivityResult()callbackManager,这将触发FacebookCallback的方法.

我的想法是创造类似的东西

interface AuthInteractor {
    void doFacebookLogin();
    void doGoogleLogin();
}
Run Code Online (Sandbox Code Playgroud)

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

Vas*_*liy 2

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

  1. Activity/Fragment 是 MVP 视图
  2. 第三方 SDK 依赖 Activity(或者至少是 Context)来访问应用程序可用的平台资源

大约两年前,当我研究 Android 中的 MVP 实现时,我偶然发现了类似的问题,我得出的结论是,解决所有此类问题的唯一方法是放弃 Activity/Fragment 作为 MVP 视图的想法。

我在这篇文章中详细讨论了这个问题:WhyActivities in Android are not UI Elements

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