gpt4 book ai didi

Android 为什么这不会抛出错误的线程异常?

转载 作者:太空宇宙 更新时间:2023-11-03 10:47:25 25 4
gpt4 key购买 nike

我的印象是只能从主线程操作 View ...但是,为什么这不会崩溃:

public class MainActivity extends Activity {
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tv = new TextView(this);
tv.setText("original text");
setContentView(tv);

new Thread(new Runnable() {
@Override
public void run() {
tv.setText("trollollolol i should die here but i won't.");
}
}).start();
}
}

我在设备和模拟器上运行,两者都工作正常,我看到文本发生了变化。怎么回事?

我还检查了线程 ID,后台线程绝对不是主线程(threadID = 1)

最佳答案

Android 实际上并不会阻止您从主线程外部更新 UI。这更像是一颗定时炸弹。如果主 UI 线程当时没有更新 UI,则您的线程可以执行此操作。至少那是我的理解。我不能 100% 确定,但我之前能够(意外地)从主 UI 线程之外更新 UI。有时它会起作用,有时它不会。但作为一种好的做法,我会使用 Async task

关于Android 为什么这不会抛出错误的线程异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20600326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com