为什么TextView在线程完成之前不会改变?

时间:2012-09-02 20:35:04

标签: multithreading button textview append

我遇到了许多人可能感兴趣的问题(初学者)。我来告诉你代码:

startButton.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            startButton.setVisibility(View.GONE);
            if (!started) {
                started = true;
                timer.start();
                information.append("Start 1\n");
                tester1.start();
                if (cores >= 2) {
                    information.append("Start 2\n");
                    tester2.start();
                }
                if (cores >= 3) {
                    information.append("Start 3\n");
                    tester3.start();
                }
                if (cores >= 4) {
                    information.append("Start 4\n");
                    tester4.start();
                }

            }
        }
    });

计时器,所有测试人员都是先前声明的线程。 信息是TextView。

问题在于,当我运行应用程序时,即使线程需要10秒钟完成,文本视图也会在线程完成后发生更改。这确实发生在模拟器(android 2.3)和真实(android 4.0)设备上。奇怪的是,线程确实在大致相同的时间开始。

1 个答案:

答案 0 :(得分:0)

必须从主线程更新任何UI组件。

例如

runOnUiThread(new Runnable() {
    public void run() {
        someTextView.setText(someResultVariable);
    }
});