卸载 Play 服务时在后台应用程序中使用 GoogleApiClient

Usage of GoogleApiClient in an app in the background when Play Services are uninstalled

我的应用程序使用 Google Maps Android API v2 并使用 FusedLocationProviderApi。 GoogleApiClient 可能由于应用程序中的事件而连接或断开连接。当应用程序在后台时,可能会发生客户端已连接,即位置跟踪打开的情况。我不使用位置侦听器,我只是时不时地使用 LocationServices.FusedLocationApi.getLastLocation(locationClient) 调用(也取决于特定于应用程序的事件)。

通常,在 Activity 中,我会使用 onResume() 中的 GooglePlayServicesUtil.isGooglePlayServicesAvailable() 方法来检查它们是否可用。想法是:当应用程序被发送到后台时,用户可以 uninstall/disable 更新播放服务,当返回应用程序时, onResume() 再次执行检查并在出现任何错误时显示对话框.

在我的用例中,位置服务在后台使用,即不在 Activity/Fragment 中,并且可能还需要在应用程序处于后台时工作。不过,此时,可以使用uninstall/disable Play Services了。

问题:当 Play 服务消失时,我的应用程序中的 GoogleApiClient 连接在后台会发生什么情况?我是否收到来自 ConnectionCallbacks#nConnectionSuspended() 方法的调用,或者可能应该期待崩溃并必须以某种方式处理它,或者它是否仍然有效(就像我仍然可以在 Linux 上看电影,即使我删除了文件,因为玩家有它的句柄)?

所以回答我自己的问题:首先调用 ConnectionCallbacks#onConnectionSuspended(),然后调用 OnConnectionFailedListener#onConnectionFailed()。因此,当使用服务的代码受到 GoogleApiClient#isConnected() 调用的保护时(至少我是这样做的),没有任何崩溃。