runOnUiThread 的使用

在開發(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)容就講到這啦,謝謝誒!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容