以下方法只执行了一半:
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。