Java 为多个活动创建GoogleAppClient

Java 为多个活动创建GoogleAppClient,java,android,google-api,google-plus,Java,Android,Google Api,Google Plus,我正在用Google+API开发一个android应用程序。我有多个活动,每个活动都需要一个GoogleAppClient实例 据我所知,可以为每个活动调用相同的GoogleAppClient实例。我的问题是,我们如何专门创建GoogleAppClient的副本 我们是否使用.addApi(),.addscope()再次构建一个,并再次实现onConnected方法和OnConnectedFailedListener方法?因为它看起来重复而且效率低下。实现这些方法难道不会覆盖其他活动中的相同方法

我正在用Google+API开发一个android应用程序。我有多个活动,每个活动都需要一个GoogleAppClient实例

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


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

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

mGoogleApiClient = getApiClient();
如果您不使用BaseGameUtil,那么我认为您必须像上面所做的那样创建它,这是一件痛苦的事情,至少BaseGameUtil为您做到了这一点,而且您可以随时更改BGU中的内容,因为它们更多的是示例而不是库


希望这有帮助。

创建多个
GoogleAppClient
实例并不昂贵。事实上,如果您使用不止一个API,它将有助于提高效率。只有您特别请求的服务才会被后台处理。因此,如果一个活动使用Plus,而另一个活动使用驱动器,则当您在驱动器活动中时,不必对Plus服务进行后台处理

mGoogleApiClient = getApiClient();
为了清楚起见,建议您为您创建的每个活动、片段、加载程序、服务或应用程序(甚至可能是我忘记的其他一些)创建一个单独的
GoogleAppClient
实例


如果你真的不想那样做,使用应用程序上下文而不是活动或片段来创建
GoogleAppClient
,并在应用程序对象中保留对它的引用。

我正在考虑将对GoogleAppClient的引用保持在静态状态,并从我的应用程序中的多个不同位置在消息队列中工作(即:由于收到推送消息而来自活动或服务)。使用应用程序上下文保留对GoogleAppClient的静态引用时,您能想到任何危险信号吗?这与将其保留在应用程序对象中似乎没有什么不同。使用应用程序上下文会带来影响。维护该服务可能会很贵。在不需要的情况下保持此状态将导致很大的损失额外的CPU和内存使用可能会使您在低端设备上遇到问题,并且更可能导致您的应用程序在后台关闭。出于这些原因,不赞成将对它的引用绑定到应用程序上下文。如果您仍要这样做,则不管您是否将其存储在应用程序对象中我是另一个单身汉。感谢您的快速响应!我意识到我可以在GoogleAppClient上使用blockingConnect,因为我在后台线程中完成所有工作,我想我可以在GoogleAppClient上使用blockingConnect,注册我的geofences(假设blockingResult成功)然后马上断开连接。我觉得这样做比永远保持客户和上下文更好。