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中執行,現在真相大白了,知識點太容易混淆了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM