zoukankan      html  css  js  c++  java
  • 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中执行,现在真相大白了,知识点太容易混淆了。

  • 相关阅读:
    Django-models,继承AbstractUser类
    Django-views,用户认证,login_requierd()
    django前篇
    jquery插件
    jquery事件及插件
    jquery操作元素
    jquery选择器筛选器
    js作用域与作用域链
    js之DOM(二)
    bootstrap
  • 原文地址:https://www.cnblogs.com/dearnotes/p/12044336.html
Copyright © 2011-2022 走看看