我看过很多项目展示如何在 MVP 中实现登录,但找不到任何与 Google/Facebook 登录相关的内容。
当登录流程与Android组件生命周期强绑定时我们该怎么办?我看到 MVP 的主要好处是我们在上面构建了一个抽象Context
,但是当我们需要遵循时,这个抽象会显得过于复杂,例如Facebook登录流程:需要注册FacebookCallback
with CallbackManager
, call logInWithReadPermissions()
(将 Activity/Fragment 传递给它),委托onActivityResult()
to callbackManager
这将触发 FacebookCallback 的方法。
我的想法是创造类似的东西
interface AuthInteractor {
void doFacebookLogin();
void doGoogleLogin();
}
其实现将了解 Context 并初始化GoogleApiClient
。它将被注入到 Presenter 中,但是有了所有这些回调(尤其是在 Facebook 的 SDK 中),事情将会变得过于复杂。在这种情况下省略 MVP 不是更好吗?
我猜你问这个问题是因为你试图将两个“想法”合并为你头脑中的一个:
- Activity/Fragment 是 MVP 视图
- 第三方 SDK 依赖 Activity(或者至少是 Context)来访问应用程序可用的平台资源
大约两年前,当我研究 Android 中的 MVP 实现时,我偶然发现了类似的问题,我得出的结论是,解决所有此类问题的唯一方法是放弃 Activity/Fragment 作为 MVP 视图的想法。
我在这篇文章中详细讨论了这个问题:为什么 Android 中的 Activity 不是 UI 元素 http://www.techyourchance.com/activities-android/
并且还有一个关于如何在 Android 中实现更好的 MVP 的教程:Android 中的 MVP 和 MVC http://www.techyourchance.com/mvp-mvc-android-1/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)