以下方法只执行了一半:
public void onLocationChanged(Location newLocation) {
double lat = newLocation.getLatitude();
double lon = newLocation.getLongitude();
boolean firstGoodFix = (waitingForLoc && newLocation.getAccuracy() < 30); // <= EXECUTION STOPS AFTER THIS LINE
if (currentLocation == null || firstGoodFix) {
LatLng myLocation = new LatLng(lat, lon);
map.animateCamera(CameraUpdateFactory.newLatLng(myLocation));
}
currentLocation = newLocation;
if (firstGoodFix) {
sendMyLocation(newLocation);
waitingForLoc = false;
} else {
sendMyLocation();
}
}
当我单步执行代码时,它会正常执行到指定的行,然后跳转到右大括号,其余代码永远不会执行。
newLocation
是有效的,waitingForLoc
(真)也是如此。 newLocation.getAccuracy()
应该是回程了1000
。 currentLocation
一片空白。 firstGoodFix
没有出现在方法末尾的变量列表中,这使我相信该行没有完成。
这里发生了什么?
编辑
按照下面的建议,我稍微改变了方法的结构,发现无论我做什么,只要waitingForLoc
读取 的值,方法就会停止执行。唯一可以让它工作的是完全删除变量。
我还尝试设置waitingForLoc
= true 作为方法的第一行,以确保它有一个值,这没有区别。以前它被设置在onResume()
.
所以我现在的问题变成了:为什么读取这个变量会导致执行停止?中似乎没有任何相关输出LogCat
。