我创建了一个具有碎片导航抽屉的Android应用程序。
然后我开始使用社交媒体集成,即Facebook,Twitter和Google Plus。我正在使用相应的官方SDK。
非社交媒体会话和获取数据的调用在以下活动中进行:
Mainactivity
:如果任何会话丢失或被撤销,则需要重定向到LoginActivity
。这是在活动生命周期方法期间完成的。
LoginActivity
:授予权限的位置,并在成功后重定向到Main
NavigationDrawerFragment
:导航抽屉,我用它来显示用户的个人资料图片,姓名和电子邮件地址。
在这3个类中,我调用相应的SDK方法并管理会话,因此存在大量代码重复。
此外,3 SDK还提供了明显不同的身份验证方式。
UiLifeCycleHelper
。GooglePlay
商店回调,并在所有活动中创建GoogleApiClient
。因此,所有这些用于处理不同社交媒体登录的功能都包含在所有必需的活动中,使得应用程序代码非常庞大且难以管理。
对于如何将这些auth方法抽象为易于维护的解决方案,使得管理会话变得更容易,您有什么建议吗? 我最好根据使用的登录信息进行单独的活动吗?
答案 0 :(得分:2)
我也面临这种问题。让我告诉我我做了什么。
答案 1 :(得分:2)
我已经完成了几次,我建议你采用的最佳方法是:
FacebookFactory
或TwitterFactory
等能够为给定任务生成准备好的对象的平台生成工厂。想象一下,您想要登录,然后向具体工厂询问LoginTask
并公开requestOAuthToken
,getSession
等常见操作。如果由于其他原因有些事情无法提取,知道它不会破坏你的应用程序,你总是可以垂头丧气。Context
对象构建的(像facebook这样的某些网络真的是侵入性的,需要知道很多东西),决定哪个是您希望通过enum
处理的社交网络。这是一个关于代码外观的模拟示例:
SocialFacade facade = SocialFacade.getInstance();
SocialSession session = facade.getSession(Network.Twitter);
String token = session.requestToken(apiId);
facade.getShare(Network.Twitter).sharePost(apiId, message);
你可以使用某种第三方库,但这是我不适合我需要的方法。
答案 2 :(得分:0)
我和你在同一条船上,
到目前为止,我发现ASNE可以使用,但我还在玩它。
答案 3 :(得分:0)
这是Factory Pattern
踢出的确切问题
你需要待办事项