GoogleApiClient的模糊javadoc告诉我们:
GoogleApiClient.ConnectionCallbacks.onConnectionSuspended
将是:
当客户端暂时处于断开连接状态时调用。如果远程服务出现问题(例如,崩溃或资源问题导致系统被其终止),就会发生这种情况。调用时,所有请求都已取消,并且不会执行任何未完成的侦听器。 GoogleApiClient将自动尝试恢复连接。应用程序应禁用需要该服务的UI组件,并等待对onConnected(Bundle)的调用以重新启用它们。
不幸的是,它并没有告诉我们它会重试多少次"恢复"连接。是否有超时,指数退避,重试次数?
如果它没有成功地神奇地恢复连接,它会调用:
OnConnectionFailedListener.onConnectionFailed
什么时候?
答案 0 :(得分:0)
我已经推出了这个项目,同时代码也发生了变化......
如果我没记错的话,它会尝试重新连接一次,假设连接因服务崩溃而停止(最常见的原因)。然后我会假设它最终会调用onConnectionFailed()
或onConnected()
,但我不会依赖它。我认为您可以通过在应用程序连接时终止GMS流程来验证这一点,但即使证据表明情况确实如此,除非有相关信息,否则我仍然不会依赖它。
如果连接失败,我不希望它重试多次,或者如果它连接并且服务再次崩溃,它将永远停止。
如果我正在构建使用客户端的东西,并且我希望尽可能保持防御,我不会相信暂停的连接。我明确再次呼叫disconnect()
和connect()
以重新建立连接。