我知道从另一个线程更新 UI 是被禁止的,所以我试着看看我将从应用程序中得到什么结果。是的,更新 UI 组件时应用程序会崩溃,但有一种情况我不明白,应用程序运行正常。
1)
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView)findViewById(R.id.textView1);
bt = (Button)findViewById(R.id.button1);
new Thread(){ //1
public void run() {
tv.setText("changed");
}}.start(); //1 }
}
2)
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView)findViewById(R.id.textView1);
bt = (Button)findViewById(R.id.button1);
bt.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
new Thread(){ //1
public void run() {
tv.setText("changed");
}}.start(); //1 }
}
});
}
很抱歉我之前对我的问题的描述,我认为大多数人都误解了它,所以我重新提出这个问题。上面有两种情况,它们应该给我崩溃错误,因为它们都创建新线程和更新 UI 组件,但实际上,只有第二种情况崩溃,但第一个场景没有崩溃。有人知道原因吗?