美文网首页
runOnUiThread()是干啥的?

runOnUiThread()是干啥的?

作者: 蒙多喝醉了 | 来源:发表于2020-07-01 20:07 被阅读0次

    一、runOnUiThread()是干啥的?

    • 属于Activity的方法
    • 用于UI更新操作
            MainActivity.this.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    // 更新UI的操作代码
                    //比如更新TextView显示的内容
                    textView.setText("哈喽我的");
                }
            });
    

    二、看源码,在理解:

        final Handler mHandler = new Handler();
        private Thread mUiThread;
    
        public final void runOnUiThread(Runnable action) {
            //判断是否在主线程
            if (Thread.currentThread() != mUiThread) 
            //不再主线程
            {   
                //这是干啥呢,标记个 1
                mHandler.post(action);
            } else 
            //在主线程
            {
                //这是干啥呢,标记个 2
                action.run();
            }
        }
    
    这说的是啥呢?
    1、如果当前线程不是UI线程,则动作将被发布到UI线程的事件队列中。

    mHandler.post(action) 是啥意思呢,我们再看源码:

        public final boolean post(Runnable r)
        {
           return  sendMessageDelayed(getPostMessage(r), 0);
        }
    

    Handler是指向主线程的。这句话的意思就是,你要做的事情,我给你塞到添加到消息队列中去了,等着吧,等轮到了就执行。

    2、在UI线程上运行指定的操作。如果当前线程是UI线程,则立即执行操作。
    action.run();
    

    这行的意思,没啥说的,直接执行了,等执行结束了你开的这个线程就完成任务了。

    相关文章

      网友评论

          本文标题:runOnUiThread()是干啥的?

          本文链接:https://www.haomeiwen.com/subject/vzghqktx.html