2013-04-11 32 views
1

我遇到處理程序問題。它僅在第一次實例化時正常工作。處理程序sendMessageDelayed僅在第一次運行

的處理程序是一個視圖中:

private long delayMillis; 
    private long mMoveDelay = 1000; 

    /** 
    * Create a simple handler that we can use to cause animation to happen. We 
    * set ourselves as a target and we can use the sleep() 
    * function to cause an update/invalidate to occur at a later date. 
    */ 
    private RefreshHandler mRedrawHandler; 


    class RefreshHandler extends Handler { 

     // serve per far vedere tile 2 almeno un tempo prestabilito checkTime 

     @Override 
     public void handleMessage(Message msg) { 


      delayMillis+=mMoveDelay; 
      System.out.println("--->handleMessage mMoveDelay"+10000); 
      System.out.println("--->handleMessage delayMillis"+delayMillis); 


      sleep(); 
     } 

     public void sleep() { 

      //this.removeMessages(0); 
      sendMessageDelayed(obtainMessage(0), mMoveDelay); 
      System.out.println("--->sleep delayMillis"+delayMillis); 
     } 
    }; 

了幾次後,我跑

mRedrawHandler = new RefreshHandler(); 
    mRedrawHandler.sleep(); 

sendMessageDelayed瞬間調用。這個問題似乎在這個崗位相似:

Handler.sendMessageDelayed(msg, delay) not working correctly

你有什麼想法? 謝謝

+1

我解決了只執行一次新的RefreshHandler()。 – Gyonder 2013-04-11 14:18:21

回答

0

在sleep方法中,獲取消息(0)的對象是什麼? 這似乎是問題所在。您不能使用上次使用的消息對象。你必須創建新的消息對象。

相關問題