为多个活动创建GoogleApiClient

时间:2014-06-27 15:11:18

标签: java android google-api google-plus

我正在使用Google+ API开发Android应用。我有多个活动,每个活动都需要一个GoogleApiClient实例。

据我所知this post,可以为每项活动调用相同的GoogleApiClient实例。我的问题是我们如何专门创建GoogleApiClient的副本?

我们是否使用.addApi(),. addscope()再次构建一个并再次实现onConnected方法和OnConnectedFailedListener方法?因为它似乎重复而且效率低下。并且不会实现这些方法也会覆盖与其他活动相同的方法吗?

2 个答案:

答案 0 :(得分:14)

创建GoogleApiClient的多个实例并不昂贵。事实上,如果您使用的不仅仅是一个API,它将有助于提高效率。只有您特别请求的服务才会被假脱机。因此,如果一个活动使用Plus而另一个活动使用Drive,那么当您在Drive活动中时,Plus服务不必进行假脱机。

要明确的是,建议您为您创建的每个Activity,Fragment,Loader,Service或Application创建一个单独的GoogleApiClient实例(甚至可能是我忘记的其他一些实例)。

如果您真的不想这样做,请使用应用程序上下文而不是活动或片段来创建GoogleApiClient并在Application对象中保存对它的引用。

答案 1 :(得分:1)

我刚刚遇到了同样的困境。为了解决这个问题,我使用了BaseGameUtil ...不确定你是否使用它但是如果你那么简单你可以让每个活动扩展BaseGameActivity,添加所需的方法然后创建一个GoogleApiClient obj和getApiClient然后为您提供在第二项活动中使用GoogleApiClient的方法。

mGoogleApiClient = getApiClient();

如果您没有使用BaseGameUtil,那么我认为您必须像上面那样创建它,这是一个痛苦,至少basegameutil为您做到了,而且您可以随时更改BGU中的内容,因为它们是更多示例比图书馆。

希望这有帮助。