2015-04-04 3 views
0

Так что я хочу иметь таймер, который выполняет некоторые методы, когда это делается с учетом 3. Но я хотел бы, чтобы он отображал тост каждую секунду, как обратный отсчет.Выполнять задачу каждую секунду и другую задачу, когда это делается

теперь у меня:

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

Это выполняет йоЗотеЬЫпд() после 3-х секунд. Итак, как я могу добавить метод, который будет выполняться каждую секунду?

Так что он делает:

0sec: Toast говоря 3

1сек: Toast говоря 2

2с: Toast говоря 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

+0

С вашей отредактированной версией она показывает «2» в тосте, а затем ничего не делает. Wich является 1 с ++, который затем становится 2. и он выполняется только после того, как – Tomdeboer

+0

зафиксирован на i-1, вы можете делиться тем, где вы отменяете таймер? – Kay

Смежные вопросы