gpt4 book ai didi

android - 奇怪!!,Textview 值正在从后台线程更新

转载 作者:太空狗 更新时间:2023-10-29 15:08:49 26 4
gpt4 key购买 nike

今天,当我玩随机的东西时发生了一些奇怪的事情。我的代码如下所示,

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView textView = (TextView) findViewById(R.id.txtName);
new Thread() {

@Override
public void run() {
for(int i=0; i<100; i++){
textView.setText("Hello I am fine" +i);
textView.setTextColor(Color.RED);
// Toast.makeText(getApplicationContext(), "Hello I am fine", Toast.LENGTH_LONG).show();
}
}
}.start();
((TextView) findViewById(R.id.txtName)).setText("Hello");

}

这段代码工作正常,但从技术上讲它不应该工作。 因为我们无法从线程更新 UI,所以我无法理解这段代码为何有效。请告诉我为什么这段代码有效。

但是当我在线程中调用 toast 时它开始崩溃,所以我的问题是为什么线程中的 textview 更新有效。

谢谢

最佳答案

您不能从后台线程更新用户界面。使用 runOnUIThread

   runOnUiThread(new Runnable() {
@Override
public void run() {
textView.setText("Hello I am fine" +i);
textView.setTextColor(Color.RED);
}
});

引用文档

每个应用程序都有自己的特殊线程来运行 UI 对象,例如 View 对象;该线程称为 UI 线程。只有在 UI 线程上运行的对象才能访问该线程上的其他对象。

关于android - 奇怪!!,Textview 值正在从后台线程更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19030327/

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