android四種更新UI程序
阿新 • • 發佈:2019-01-22
子執行緒 裡面 更新報錯的原因:
android原始碼裡面有一個函式:
checkThread();準們用於檢測;
checkThread(){
if(mThread != Thread.currentYThread()){
throw new CalledFromWrongThreadException(
"Only the original thread that create a view hierarchy can touch its view"
)
}
在子執行緒中,更新主執行緒的UI都是會報錯的,所以下面介紹4中方法,(基本原理差不多。最常用的還是handler,下面第一種,)
1,最常用的一種就是:
private Handler handler = new Handler(){
poublic void handlerMessage(android.os.Message msg){
textView.settext("xxxx");
};
};
然後:
Message message = new Message();
//或者 Message message = handler.obainMessage();
message.obj = object;
handler.sendMessage(message);//或者message.sendToTarget();
第 2 種:
handler.post(new Runnable(){
textView.setText("xxx");
});
如:
----------
new Thread(){
public void run(){
handler.post(new Runnable(){
textView.setText("xxx");
});
}
}.start();
第 3 種:
runOnUiThread(new Runnable(){
public void run(){
textView.setText("xxxx");
}
});
第 4中:通過view自身來處理
textView.post(new Runnable(){
public void run(){
textView.setText("xxxx");
}
});