2015-11-13 56 views
2

我正在构建使用播放服务API获取位置的应用程序。我开始下命令的位置更新:无法在配置更改破坏活动后停止Android位置更新

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

要停止它,我只是执行它时,“STOP”按钮时执行的代码的下一条:

LocationServices.FusedLocationApi.removeLocationUpdates(
      mGoogleApiClient, this); 

然而,如果配置发生变化(例如,旋转屏幕)。当我按下按钮,该应用程序进入到一个错误:

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

你能告诉我,我怎么能阻止我的“停止”按钮的位置更新屏幕旋转后? 非常感谢!

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

+0

requestLocationUpdates在你的onCreate方法中? – galvan

+0

@galvan OnCreate我初始化mGoogleAPIClient并使用此代码开始位置更新if(mGoogleApiClient.isConnected()){startLocationUpdates();}其他{ createLocationRequest(); }'code' – Luis

回答

0

我认为,当你旋转屏幕活动刷新本身。为了解决这个错误尝试使用:

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

或者只是:

​​
+0

恐怕问题在于当活动刷新时,mGoogleAPIClient会丢失,我无法再引用该实例来停止位置更新 – Luis