2015-04-04 112 views
0

所以我想要一個計時器,當它計數到3時執行一些方法。但是我想讓它每秒都像倒計時一樣顯示吐司。每秒執行一次任務,完成後執行另一個任務

我現在有:

new Timer().schedule(new TimerTask() { 
      @Override 
      public void run() { 
       runOnUiThread(new Runnable() { 
        public void run() { 
         doSomething() 
        } 
       }); 
      } 
     }, 3 * 1000); 

這家3秒後執行DoSomething的()。那麼我如何添加一個方法來執行每一秒?

,使得它:

0秒:吐司說3

1秒:吐司說2

2秒:吐司話說1

3秒:執行doSomething的()

回答

0

嘗試:

private static final int SHORT_DELAY = 1000; //1 sec 

    new Timer().schedule(new TimerTask() { 
     int i=1; 
     @Override 
     public void run() { 
      runOnUiThread(new Runnable() { 
       public void run() { 
        //Can u check logs if running? 
        Log.d("Timer running",String.valueOf(i)); 
        i++; 
        if(i%4==0) //started with 1 so -->2,3,4 
         doSomething() 
        else 
         Toast.maketext(getApplicationContext(),String.valueOf(i-1), 
         SHORT_DELAY).show(); 
       } 
      }); 
     } 
    },0, 1000); 

請在適當的地方取消。也許當你的工作完成後,或者當doSomething()被調用時立即。

+0

我收到以下錯誤:http://puu.sh/h1kJa/1f9f12aae8.png – Tomdeboer 2015-04-04 16:58:37

+0

使用您的編輯版本,它在Toast中顯示「2」,然後不執行任何操作。 Wich是++中的1,然後變爲2.它只執行一次 – Tomdeboer 2015-04-04 17:15:54

+0

固定到i-1,你可以分享你取消定時器的位置嗎? – Kay 2015-04-04 17:28:56