2012-04-06 52 views
1

我有,我用mHandler作爲定時器應用....它工作正常,然後Runnable接口MuPdeteTimeTask工程....下面是一個代碼...機器人如何停止mHandler.postDelayed

mHandlerTime.removeCallbacks(mUpdateTimeOutTask); 
       mHandlerTime.postDelayed(mUpdateTimeOutTask, delay_timeoutzz); 

....................................

private Runnable mUpdateTimeOutTask = new Runnable() { 
      public void run() { 
       Toast.makeText(getApplicationContext(), "TimeOut of session is reached! Session will be force closed!", Toast.LENGTH_LONG).show(); 
       new UploadTask().onCancelled(); 
         } 
     }; 

我該如何阻止它或想要定義「延遲」的新含義?

回答

1

你一定能夠做這樣的事情,

採取兩個變量

boolean delayedAgain = false; 
long newDelayedTimeFromNow=5000; 

然後在你運行的應用邏輯,

Runnable mUpdateTimeOutTask = new Runnable() {    
      @Override 
      public void run() { 
       if(delayedAgain) 
       { 
        delayedAgain = false; 
        mHandlerTime.postDelayed(this, newDelayedTimeFromNow); 
        return; 
       } 
       else 
       { 
        // DO JOB ON TIME. 
       }     
      } 
     }; 

現在從你的另一項任務,

if(somethingIsDone) 
{ 
    delayedAgain = true; 
    newDelayedTimeFromNow = 3000; 
} 
+1

好主意,我會tr Y!謝謝!!! – timonvlad 2012-04-06 12:47:55