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中执行,现在真相大白了,知识点太容易混淆了。

原文地址:https://www.cnblogs.com/dearnotes/p/12044336.html