runOnUiThread 的使用

在开发的过程中,我们经常涉及到在非主线程中更新ui的问题,我们能想到的几种方法如下:

  • handle ---- message 结构
  • AsyncTask
handler ---- message 结构

这个是我们更新ui的利器,但是 messageCode 是我不喜欢的,更新ui要发送code,还要在 handler 中 接收处理,如果更新的地方很多的话,会导致 code 在activity 中 乱飞,严重打乱我们代码的紧凑性。

AsyncTask

这个也是一个更新ui的好方法,但是一般继承它去实现异步更新的话,还是要写好多一部分辅助代码的,因为 AsyncTask 自带的需要实现的方法太多了,我们的需求是就在 textView 中显示 一下文字,如果用这个实现的话,简直是捅了马蜂窝了,什么 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;
        }
    }

效果图如下:


runOnUiThread 的使用_第1张图片
1.gif

ok,关于这方面的内容就讲到这啦,谢谢诶!

你可能感兴趣的:(runOnUiThread 的使用)