我见过很多项目,展示如何在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不是更好吗?
答案 0 :(得分:2)
我猜你问这个问题是因为你试图将两个“想法”合并到你头脑中的一个“想法”中:
两年前,当我研究Android中的MVP实现时,我偶然发现了类似的问题,我得出结论,解决所有此类问题的唯一方法是放弃将Activity / Fragment视为MVP视图的想法。
我在这篇文章中发布了对此问题的详细讨论:Why Activities in Android are not UI Elements
还有一个关于如何在Android中实现更好的MVP的教程:MVP and MVC in Android