将GoogleApiClient obj从一个活动传递到另一个活动

时间:2014-07-30 08:03:34

标签: android android-activity google-play-services

我希望能够在除创建GoogleApiClient obj(主要活动)之外的其他活动中更新我的排行榜得分。

这样做的最佳方式是什么?

使obj可以成为正确的方式吗?如果是这样,如果该类是库的一部分,你怎么能这样做。

你可以让obj静态吗?这样安全吗?

关于如何实现这一目标的任何建议都会很棒。

3 个答案:

答案 0 :(得分:4)

你可以使用Application类,一个面向android的单例模式类,它可以是你的ApiClient调用的基类。

以下是API文档的链接,这里有一些examples以及使用Application over Singleton的原因。

答案 1 :(得分:4)

好的我以为我会回答我自己的问题,因为我找到了一个适合我的方法。 很多这是来自另一个回答的问题here

这个方法使用了basegameutil,所以从Lee的链接答案我可以让我的活动扩展BaseGameActivity并添加所需的方法。

然后我在第二个活动中创建了一个新的GoogleApiClient实例,然后像这样获得api客户端:

mGoogleApiClient = getApiClient();

我现在可以在我的第二个活动中传递这个并按照我的意愿调用方法。

作为Lee States的答案,你可以拥有google api客户端的多个实例,但仍然不会被要求为每个人登录,因为它知道你已经登录了。

答案 2 :(得分:3)

如果您需要经常连接到GoogleApiClient,那么我可能会创建一个单例类来处理GoogleApiClient调用(http://en.wikipedia.org/wiki/Singleton_pattern)或创建一个运行整个应用程序生命周期的后台服务({{3} })。

https://developer.android.com/training/best-background.html

  

GoogleApiClient与各种静态方法一起使用。一些   这些方法需要连接GoogleApiClient,有些会   在连接GoogleApiClient之前排队通话;检查具体   用于确定是否需要连接的API文档。

如果您不需要立即发送数据,GoogleApiClient会将要发送的数据排入队列,并将其发送到主要活动中。