我有活动 A ,它实例化GoogleApiClient,在AsyncTask中连接并开始处理,可能需要几秒钟或几分钟。
与此同时,用户触发活动 B ,通过连接实例化自己的GoogleApiClient。
问题是:应用程序是否可以连接多个GoogleApiClient实例并同时工作,还是应该使用自己的信号量保留应用程序单例?
答案 0 :(得分:16)
保留尽可能多的GoogleApiClients非常好,并且通常有很好的理由这样做(片段分离,不同帐户等)。它也不是特别低效。两个客户的成本比一个客户的成本低不到1%。
如果所有这些都试图解决错误,可能会让人感到困惑,因此让Fragment客户端全部忽略连接失败并让一个活动或应用程序级客户端负责解决问题可能是一个好主意。
答案 1 :(得分:6)
可能有多个连接的GoogleApiClients,可能效率低下。你需要小心使用带有AsyncTasks的GoogleApiClient,如果活动消失,它就不会断开连接。
考虑在保留的片段中管理GoogleApliClient。见http://www.androiddesignpatterns.com/2013/04/retaining-objects-across-config-changes.html
答案 2 :(得分:0)
问题在于非常常见的OOP组合知识和工厂设计模式。说约1%的东西,如下面的@Hounshell不是工程方法。