• handler.postDelayed(new Runnable()){ }运行在主线程吗


    答案:是的

     handler.postDelayed(new Runnable() {
                        @Override
                        public void run() {
            tv_word.setVisibility(View.GONE);
                        }
                    },3000);
    

    官方说法
    开启的runnable会在这个handler所依附线程中运行,而这个handler是在UI线程中创建的,所以
    自然地依附在主线程中了。
    postDelayed(new Runnable()) 而没有重新生成新的 New Thread()


    小结
    通常来说handler.postDelayed(new Runnable()){ }是为了刷新UI用的,handler实例化在主线程,postDelayed(new Runnable()){ }方法又依附于handler所在线程,所以就运行于主线程。即使这样我还是不理解,new Runnable()不是新开了一个线程吗


    原来我弄错了,如果是implements Runnable,像extends Thread一样,是新开了线程,但是现在只是new Runnable(){},是把Runnable对象以Message形式post到UI线程里的Looper中执行,现在真相大白了,知识点太容易混淆了。

  • 相关阅读:
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
    深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)请自取
    Map遍历法则
    c.toArray might (incorrectly) not return Object[]
    JavaGuide
    NIO入门
    Docker应用安装
  • 原文地址:https://www.cnblogs.com/dearnotes/p/12044336.html
Copyright © 2020-2023  润新知