通过多活动应用程序的流程,将Google+ api客户端生命周期捆绑在一起的好方法/推荐方法是什么?使活动依赖于onConnected api客户端方法来触发其功能,将其用作一次性"激活"的东西,或者可能完全不同的东西?
我目前正在努力了解如何在我的Android应用中正确使用Google+登录,该应用包含多项活动.
在第一阶段,我们的想法是使用G +登录来验证用户,并能够收到她的电子邮件,发送通知和类似的东西.最终我计划推出其他Google功能,例如地图或其他Google Play服务,所以我认为已经实施它很有用.
但是,我的应用程序没有按预期运行,我已经将问题缩小到这样一个事实,即当存在多个活动时,我还没有理解应用程序周期中的G +登录.
实现此auth方法的正确或推荐方法是什么?可能有一种形式可以指导我朝着正确的方向发展吗?
例如,我发现了一个非常简单的api客户端生命周期图,但这与app流程有什么关系?
最初我有一个登录活动,我在其中放入登录按钮.按照Google的指南,我可以登录,当调用onConnected方法时,我启动Home Activity(有点像应用程序的仪表板或主屏幕).
这有点工作.例如,为每个活动处理onStart和onStop的好方法是什么?我是否应该每次为每项活动重新连接并重新验证api客户端?因此,使用BaseActivity实现所有这些可能是一个好主意.
另一个问题是,我应该使用相同的api客户端对象并以某种方式传递它,或者可能将它存储在Base Activity类中?或者我应该每次创建和初始化一个新的api客户端对象?
如何使用Login Activity对G +进行身份验证,然后只需获取电子邮件并将其存储在本地数据库中,并将用户标记为"已验证"或"活动"等.这样可以防止我每次关闭应用程序或暂停连接时都必须重新进行身份验证,甚至可以节省一些电量.
该应用程序实际上并没有使用G +发布或任何其他类似的功能.理想情况下,它应该可以脱机工作,只需要连接初始身份验证或其他一次性事物.
非常感谢任何正确方向的建议或指示.
编辑:我已经阅读了我能找到的所有使用Google+的指南和教程,并且每个人都从单一活动的角度来解决这个问题.我认为这是一个普遍存在的问题,它将受益于模式或至少一般的指导方针.
我在尝试为Android Google登录注销时收到此错误消息:
Caused by: java.lang.IllegalStateException: GoogleApiClient is not connected yet.
Run Code Online (Sandbox Code Playgroud)
崩溃发生在DrawerActivity.java(下面)中,我在其中调用signOut()方法.
我已经查看了其他帖子中的解决方案,并试过它们无济于事:
java.lang.IllegalStateException:GoogleApiClient尚未连接
GoogleApiClient尚未连接异常 致命异常:java.lang.IllegalStateException GoogleApiClient尚未连接
MainActivity.java:
protected void onCreate(Bundle savedInstanceState) {
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this, this)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();
//... other code for google sign in not shown
}
protected void onStart() {
mGoogleApiClient.connect();
}
private void handleSignInResult(GoogleSignInResult result) {
if (result.isSuccess()) {
App.getInstance().setClient(mGoogleApiClient);
//start DrawerActivity
}
}
Run Code Online (Sandbox Code Playgroud)
在DrawerActivity.java中(我要执行注销)
private void googleSignOut(){
mGoogleApiClient = App.getInstance().getClient();
Auth.GoogleSignInApi.signOut(mGoogleApiClient);
}
Run Code Online (Sandbox Code Playgroud)
在我的App活动中扩展了Application(用于存储GoogleApiClient)
public class App extends Application {
private GoogleApiClient mGoogleApiClient;
private …Run Code Online (Sandbox Code Playgroud) java android google-api-client android-studio android-googleapiclient