我有一个基本的应用程序,它使用谷歌地图在设备的最后一个已知位置放置自定义标记。由于位置客户端抛出了非法状态异常,应用程序经常崩溃。
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客户端这个问题。 :)
答案 0 :(得分:0)
可能的解决方案:
在绘制前检查活动状态
void onPause(){
allowDraw = false;
...
}
void onResume(){
allowDraw = true;
...
}
if (servicesConnected() && locClientConnected && allowDraw) {
loc = lClient.getLastLocation();
//code to draw circle
}
使用try catch block:)