【问题标题】:GoogleApiClient.isConnected() returns true in airplane modeGoogleApiClient.isConnected() 在飞行模式下返回 true
【发布时间】:2014-05-21 23:44:40
【问题描述】:
我们遇到了以下似乎没有意义的行为:尝试连接 GoogleApiClient 的实例成功并在我们的 GoogleApiClient 实例中调用 isConnected() 返回 true,即使很明显客户端无法连接到服务。
为了确认这种行为,我在启动应用程序之前启用了飞行模式,然后我打印了 isConnected() 返回的值,它等于 true。
所以现在我很困惑。这是预期的行为还是错误?是否因为 API 透明地处理离线而报告连接成功?
【问题讨论】:
标签:
google-api-java-client
google-play-games
google-api-client
【解决方案1】:
这个 isConnected() 调用与设备是否具有连接性无关,它解释了您是否连接到设备本身上的 Google Play services 服务。有许多操作在您连接到服务之前无法执行,但无论用户是否在线都可以执行(例如,编写 Plus 时刻)。
没有调用来确定用户是否连接到互联网,因为已经有众所周知的方法可以做到这一点,而且这种连接很脆弱。仅仅因为您的用户在开始您的活动时已连接并不意味着他们会在您准备好拨打电话时在几分钟(甚至几秒钟)内连接。
话虽如此,有时要建立与服务的连接,需要互联网连接(尤其是在授权您的应用时)。