Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 来自处理程序的安全UI更新_Java_Android - Fatal编程技术网

Java 来自处理程序的安全UI更新

Java 来自处理程序的安全UI更新,java,android,Java,Android,我在headfirst Android Development一书中找到了包含UI用法的示例代码,它不是来自主线程 根据我的理解,run(){}的内容在单独的线程中运行。和linedistanceView.setText(distancester)正在尝试使用主线程不允许的UI。我错了 private void displayDistance() { final TextView distanceView = (TextView) findViewById(R.id.di

我在
headfirst Android Development
一书中找到了包含UI用法的示例代码,它不是来自主线程

根据我的理解,
run(){}
的内容在单独的线程中运行。和line
distanceView.setText(distancester)正在尝试使用主线程不允许的UI。我错了

private void displayDistance()
    {
        final TextView distanceView = (TextView) findViewById(R.id.distance);
        final Handler handler = new Handler();
        handler.post(new Runnable() {
            @Override
            public void run()
            {
                double distance = 0.0;
                if (bound && odometer != null) {
                    distance = odometer.getDistance();
                }
                String distanceStr = String.format(Locale.getDefault(),"%1$,.2f miles", distance);
                distanceView.setText(distanceStr);
                handler.postDelayed(this, 1000);
            }
        });
    }
根据:

默认构造函数将此处理程序与当前线程的
活套
相关联

因此,只要在主线程上调用
displaydestance()
,处理程序就会在运行传递给它的任何
Runnable
时使用主线程