在開發(fā)的過程中,我們經(jīng)常涉及到在非主線程中更新ui的問題,我們能想到的幾種方法如下:
- handle ---- message 結(jié)構(gòu)
- AsyncTask
handler ---- message 結(jié)構(gòu)
這個是我們更新ui的利器,但是 messageCode 是我不喜歡的,更新ui要發(fā)送code,還要在 handler 中 接收處理,如果更新的地方很多的話,會導致 code 在activity 中 亂飛,嚴重打亂我們代碼的緊湊性。
AsyncTask
這個也是一個更新ui的好方法,但是一般繼承它去實現(xiàn)異步更新的話,還是要寫好多一部分輔助代碼的,因為 AsyncTask 自帶的需要實現(xiàn)的方法太多了,我們的需求是就在 textView 中顯示 一下文字,如果用這個實現(xiàn)的話,簡直是捅了馬蜂窩了,什么 onPreExecute ,doInBackground(String... params),onProgressUpdate 等等方法會紛涌而至,讓人防不勝防。即使我們寫一個抽象類來抽取部分它的方法出來,那又得多個文件了,為了一個簡單的 textView 顯示,多少顯得有些"不值"。
那么,runOnUiThread 就閃亮的登場了!
它的使用的話,也不難,但能簡潔而輕快的解決簡單 ui 更新的需求,例如以下是我點擊button,更新 button文字的例子:
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_test:
this.runOnUiThread(new Runnable() {
@Override
public void run() {
mBtnTest.setText("王者榮耀");
}
});
break;
case 1:
break;
default:
break;
}
}
效果圖如下:

1.gif
ok,關(guān)于這方面的內(nèi)容就講到這啦,謝謝誒!