2013-04-10 6 views
1

У меня есть приложение, в котором на основе некоторого щелчка я запускаю таймер с помощью TimerTask(). Но я также хотел бы иметь поддержку нескольких таймеров для нескольких кликов. Итак, если один таймер уже работает и выдается другой клик, он запускает отдельный поток таймера, а не только отменяет первый.Android: Timer Task query

Не могли бы вы помочь?

@Override 
public void onListItemClicked(int index, Map<String, Object> data) { 
    timer = new Timer(); 
    timer.schedule(new TimerTask() { 
     int n = 0; 
     @Override 
     public void run() {   
      if (++n == 300) { 
       timer.cancel(); 
      } 
      timer = null; 
     } 
    },1000,1000); 
} 

ответ

2

Вы можете иметь такие вещи, как это:

@Override 
public void onListItemClicked(int index, Map<String, Object> data) { 
    //you shouldn't have timer as class' property 
    //if so your timer will cancel itself when you click again 
    //local timer will be cancelled when n is counted to 300 only 
    Timer timer = new Timer(); 
    timer.schedule(new TimerTask() { 
     int n = 0; 
     @Override 
     public void run() { 

      if (++n == 300) { 
       timer.cancel(); 
      } 
      timer = null; 
     } 
    },1000,1000); 
} 
+0

спасибо, единственная проблема в том, что я не знаю, максимальное значение и будет зависеть использование. Кроме того, я хочу, чтобы для каждого щелчка запускался соответствующий таймер. В вашем коде я думаю, что вы начинаете все вместе, что не работает – Sunny

+0

Я ошибся, что вы имели в виду. в приведенном выше коде, timertask не делится друг с другом, поэтому вам не нужно беспокоиться, что он остановит другой таймер. – Krypton

+0

см. Во-первых, предположили, что максимальное количество таймеров будет 10, но это может быть что угодно, infax максимальное число будет динамически изменяться в зависимости от количества кликов пользовательского интерфейса. Кроме того, каждый таймер должен запускаться после соответствующего щелчка и не ждать, пока все клики будут выпущены. Надеюсь, вы получите мою точку – Sunny