恢复之后执行的代码顺序似乎错误,之前很好,它是线性代码

时间:2012-07-15 16:15:46

标签: android gps

更新:我在设置pLatOld = pLat之前添加了计算,有些在恢复之后使用旧值和pLatOld的一些新值。它们都应该使用旧值,它们是在第一次运行活动时执行的。看起来Math类代码使用了不正确的值,但仅在恢复活动之后。直线内联代码使用正确的值。有没有办法在代码中的其他所有内容执行后更新旧的更新?

我搜索了Google和stackoverflow执行订单。大多数回复都处理并行线程,但由于这是线性代码,因此它是一个更简单的问题,而且让我难以理解。我已经删除了下面示例中的代码以简化我的调试。通常我会在设置pLat和更新pLatOld之间进行计算,这取决于这些读数之间的差异。它在第一次工作正常,但在恢复之后,前一个值也是新值,因此我的计算显示0距离。

    @Override
    public void onLocationChanged(Location location) {
        if (location != null)
        {
            pLat = location.getLatitude();
            textData = (TextView)findViewById(R.id.textData);
            DecimalFormat df = new DecimalFormat("#.########");
            textData.setText(
                    "Lat " + df.format(pLat) 
                    +"\npLatOld " + df.format(pLatOld)
                    );
            pLatOld = pLat;
        }
    }

当我输入38后跟38.1

时,我第一次将此作为输出
Lat 38.1
pLatOld 38

这是正确的。

但如果我离开页面并返回并做同样的事情我会得到

Lat 38.1
pLatOld 38.1

这是错误的。

换句话说,pLatOld = pLat似乎在它之前的代码之前执行。

我已经尝试添加虚拟计算,因此编译器知道我在设置后使用pLatOld但没有快乐。

1 个答案:

答案 0 :(得分:0)

首次执行pLatOld = pLat; pLatOldpLat获取38.1的值。

因此,当它稍后执行时,预期输出为原样。