如何在多个活动中使用BaseGameActivity.getApiClient()?

GDa*_*ger 6 android android-activity google-play-services google-play-games

在我的游戏应用程序中,我希望用户在启动活动期间登录Google Play服务,因此我将其作为子类BaseGameActivity.然后为游戏启动单独的活动,最后我想使用Google Play服务更新排行榜,这需要调用BaseGameActivity.getApiClient().

我应该如何使用与子类不同的活动使用Google Play服务BaseGameActivity

我想到的两个选项是:传递对起始活动的引用,或使用处理程序并向起始活动发送消息.但我不知道哪种方法会更好(或者如果第三种方式更好),而且看起来这可能是一种相当常见的情况.

fre*_*dom 4

如果您想GameHelper与多个活动一起使用,最好在不使用的情况下实现它BaseGameActivity,然后GameHelper在活动之间传递您的实例(或在某处保留静态实例)。

GameHelper您可以直接在此页面上找到使用说明(请参阅在没有 BaseGameActivity 的情况下使用 GameHelper标题)。

只需确保您在所有使用它的活动中进行了所需的GameHelper调用(尤其是)。onActivityResult至于登录/退出,您需要根据应用程序的流程自行确定将其放置在哪些活动中。

  • 我刚刚看到[this](http://stackoverflow.com/a/24235549/1326821)答案,这似乎是在多个活动中使用Google Play服务的好方法。 (4认同)
  • 独立使用“GameHelper”的问题是,据我所知,没有好的方法可以在活动之间传递不可序列化/可解析的对象(例如“GameHelper”),并且使其静态似乎是一个坏主意,因为“GameHelper”持有对以下活动的引用:创建了它。 (2认同)
  • 你是完全正确的,我什至没有考虑到它保留了原始活动作为参考。您可以替换这些值,但这似乎是一个非常糟糕的方法。我想他们在设计“BaseGameUtils”时考虑了单一活动应用程序(大多数游戏无论如何都会如此)。似乎在每个活动中实现它是唯一的**正确的**方法,但它需要为每个活动断开/重新连接 - 只要它不会太频繁地发生,这就不应该成为问题。 (2认同)