我很困惑为什么要更新处理程序、异步任务或 runOnUiThread 中的 ui 元素,如果您已经在 UI 线程上,请考虑以下片段,编号从 1 到 4:(出于演示目的,可能有语法错误)
// in MainActivity.java #1
public void onCreate(Bundle bundle) {
setContentView(R.layout.main);
TextView name = (TextView)findViewById(R.id.name);
name.setText("Name Changed!!");
}
// in MainActivity.java #2
public void onCreate(Bundle bundle) {
setContentView(R.layout.main);
TextView name = (TextView)findViewById(R.id.name);
handler.post(new Runnable() {
public void run() {
name.setText("Name Changed!!");
}
});
}
// in MainActivity.java #3
public void onCreate(Bundle bundle) {
setContentView(R.layout.main);
TextView name = (TextView)findViewById(R.id.name);
runOnUiThread(new Runnable() {
public void run() {
name.setText("Name Changed!!");
}
});
}
// in MainActivity.java #4
public void onCreate(Bundle bundle) {
setContentView(R.layout.main);
...same thing,...update textview in AsyncTask
}
// in MainActivity.java #5
public void onCreate(Bundle bundle) {
setContentView(R.layout.main);
TextView name = (TextView)findViewById(R.id.name);
name.post(new Runnable() {
public void run() {
name.setText("Name Changed!!");
}
});
}
正如您从示例 #1 - #4 中看到的那样,我不明白为什么您需要使用 #2、#3 或 #4,因为 #1 您已经在 UI 线程上!!!
换句话说,我说#1-#4 是相同的——即你想在 UI 线程/主线程上执行一些东西,所以告诉我为什么你会使用 #2、#3 或 #4,如果# 1 已经在 UI 线程上。
每个有什么区别?
请提供任何文档或实际用例的引用
谢谢你!!