我有活动A实例化 GoogleApiClient,连接并开始在 AsyncTask 中进行处理,这可能需要几秒钟或几分钟。
同时,用户触发了活动B,该活动通过连接实例化了它自己的 GoogleApiClient。
问题是:一个应用程序是否可以连接多个 GoogleApiClient 实例并同时工作,或者我应该使用自己的信号量来保持应用程序单例?
我有活动A实例化 GoogleApiClient,连接并开始在 AsyncTask 中进行处理,这可能需要几秒钟或几分钟。
同时,用户触发了活动B,该活动通过连接实例化了它自己的 GoogleApiClient。
问题是:一个应用程序是否可以连接多个 GoogleApiClient 实例并同时工作,或者我应该使用自己的信号量来保持应用程序单例?
保留尽可能多的 GoogleApiClients 是完全可以的,而且这样做通常有充分的理由(片段分离、不同帐户等)。它也不是特别低效。两个客户的成本比一个客户的成本高出不到1%。
如果他们都试图解决错误,这可能会令人困惑,因此最好让 Fragment 客户端都忽略连接失败,并让 Activity 或 Application 级别的客户端负责解决问题。
它可能有多个连接的 GoogleApiClients,只是可能效率低下。您确实需要小心将 GoogleApiClient 与 AsyncTasks 一起使用,如果活动消失,它不会断开连接。
考虑在保留的片段中管理 GoogleApliClient。见http://www.androiddesignpatterns.com/2013/04/retaining-objects-across-config-changes.html
这个问题正在通过非常常见的 OOP 组合知识和工厂设计模式来解决。说大约 1% 的东西,比如下面的 @Hounshell 不是工程方法。