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,问题就解决了。