我有一个基本的应用程序,它使用谷歌地图在设备的最后一个已知位置放置一个自定义标记。由于位置客户端引发的非法状态异常,该应用程序经常崩溃。
java.lang.IllegalStateException: Not connected. Call connect() and wait for onConnected() to be called.
这通常是在 Asynctask 完成然后使用新信息调用地图更新但由于暂停活动而中断时引起的。我尝试设置一个简单的布尔检查以确定客户端是否在尝试更新之前已连接。
if (servicesConnected() && locClientConnected) {
loc = lClient.getLastLocation();
//code to draw circle
}
但这似乎对 ANR/崩溃没有影响,因此它在活动处于活动状态时执行,但在调用此之前大多数未完成:
protected void onPause() {
lClient.disconnect();
super.onPause();
}
在此处删除断开连接并允许它完成是否是一种好习惯?或者这甚至会有所作为?我希望有人遇到过 Location 客户端的这个问题。:)