搜尋

首頁  >  問答  >  主體

android - Handler postDelayed 无效。

        mHandler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        mHandler.removeCallbacksAndMessages(null);
                    }
                }, 500);
                
                
                
                 mHandler.removeCallbacksAndMessages(null); 用来移除所有消息,
                 
                 但是用handler.postdelayed 无效,
                 是用TimerTask 或者 Thread  来控制时 是可以生效的。
                 
                请问因为什么原因导致无效的呢?
                
              
迷茫迷茫2771 天前1365

全部回覆(3)我來回復

  • ringa_lee

    ringa_lee2017-04-17 17:37:39

    removeCallbacksAndMessages(null)的作用是什麼嗎?

    如果參數為null的話,會將所有的Callbacks和Messages全部清除掉。
    你在看原始碼,Message的建構子是空,what為0,還沒執行, 也會被刪除掉。

    回覆
    0
  • 高洛峰

    高洛峰2017-04-17 17:37:39

    請問到底怎麼無效了,是mHandler.removeCallbacksAndMessages(null);沒有執行?

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 17:37:39

    感覺延遲500後,remove掉自己這個runnable有些奇怪。
    可以試試這個

    
    mHandler = new Handler(){
       handleMessage(Message msg){
        switch(msg.what){
        case REMOVE:
           removeCallbacksAndMessages(null);
        }
       }
    }
    ....
    mHandler.sendEmptyMessageDelayed(REMOVE, 500);
    

    回覆
    0
  • 取消回覆