Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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
Multithreading 为什么TextView在线程完成之前不更改?_Multithreading_Button_Textview_Append - Fatal编程技术网

Multithreading 为什么TextView在线程完成之前不更改?

Multithreading 为什么TextView在线程完成之前不更改?,multithreading,button,textview,append,Multithreading,Button,Textview,Append,我遇到了一个许多(初学者)可能感兴趣的问题。让我向您展示代码: startButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { startButton.setVisibility(View.GONE); if (!started) { started = true;

我遇到了一个许多(初学者)可能感兴趣的问题。让我向您展示代码:

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();
                }

            }
        }
    });
计时器和所有测试程序都是先前声明的线程。 信息是一个文本视图


问题是,当我运行应用程序时,即使线程需要10秒才能完成,textview也会在线程完成后更改。这确实发生在模拟器(android 2.3)和真实(android 4.0)设备上。奇怪的是,线程几乎同时启动。

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

比如说

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

谢谢看起来加载这5个线程大约需要1.5秒,所以我放了一个splashscreen,问题就解决了。