在活动之间坚持 Google Play 服务登录

Persist Google Play Services login between activities

我认为这很简单,但我一直在兜圈子试图弄清楚如何让用户在 Activities 之间保持登录状态。

我有一个"Main"和一个"Details"Activity。用户在 "Main" Activity 中登录 Google Play Services,我想在 "Details" Activity.

中提交成就和排行榜数据

我在 Activities 和使用中继承自 BaseGameActivity

 mGoogleApiClient = getApiClient();

在 "Details" 中,但是当我调用 isConnected 时它总是 returns false.

我什至尝试从 "Main" Activity 复制所有 login/callback 代码,但它仍然没有检测到用户已登录。

这个 post 建议不要使用 BaseGameActivity 并使用 singleton:

传递 GameHelper

How to use BaseGameActivity.getApiClient() in multiple activities?

不确定正确的方法是什么。

最简单的方法是让两个活动都创建一个单独的 api 客户端实例。连接状态在它们内部共享,因此您无需担心如何传递客户端和处理 activity 未激活时可能发生的回调,玩家只会登录你的主要 activity.

确实不再需要从 BaseGameActivity 扩展您的 activity(观看有趣的解释:Death of BasegameActivity)。您需要做的是实现处理初始化 GoogleAPIClient 的两个接口:

public class MainActivity extends Activity implements
        GoogleApiClient.ConnectionCallbacks,
        GoogleApiClient.OnConnectionFailedListener {
        }

要实现这些,请参阅示例和文档:https://developers.google.com/games/services/android/init