在活动被配置更改破坏后,无法停止Android位置更新

时间:2015-11-13 23:54:55

标签: android

我正在构建一个使用播放服务API来获取位置的应用程序。我用下一个命令开始位置更新:

LocationServices.FusedLocationApi.requestLocationUpdates(
            mGoogleApiClient, mLocationRequest, this);

要停止它,我只需执行下一段代码,当" STOP"按下按钮:

LocationServices.FusedLocationApi.removeLocationUpdates(
            mGoogleApiClient, this);

然而,如果配置发生变化(例如,旋转屏幕)。当我按下按钮时,应用程序出错:

java.lang.IllegalStateException: GoogleApiClient is not connected yet.

您能告诉我,如何通过我的" Stop"停止更新位置信息。屏幕旋转后按钮? 非常感谢!

我不想在屏幕旋转时禁用配置更改。

2 个答案:

答案 0 :(得分:0)

我认为当您旋转屏幕活动时会自行刷新。要处理此错误,请尝试使用:

if (!mGoogleApiClient.isConnecting())
 LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this);

或只是:

if (mGoogleApiClient.isConnected())
 LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this);

答案 1 :(得分:0)

停止并重新启动onPause()和onResume()方法中的更新,例如开发人员指南建议:http://developer.android.com/training/location/receive-location-updates.html