2013-04-10 2 views
1

일부 클릭을 기반으로 TimerTask()를 사용하여 타이머를 시작하는 앱이 있습니다. 그러나 여러 번 클릭 할 때 여러 타이머를 지원하고 싶습니다. 하나의 타이머가 이미 작동 중이며 다른 클릭이 발생하면 첫 번째 타이머를 취소하는 것이 아니라 별도의 타이머 스레드를 시작합니다.Android : 타이머 작업 쿼리

누군가 도와주세요.

@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

덕분에, 유일한 문제는 내가 최대 값을 모르고 따라 사용이 될 것입니다. 또한 각 클릭마다 해당 타이머가 시작되기를 원합니다. 귀하의 코드에서, 나는 모두 함께 시작, 그 wouldn; t 일을 생각합니다 – Sunny

+0

내가 무슨 뜻인지 잘못 됐어. 위의 코드에서 timertask는 서로 공유하지 않으므로 다른 타이머가 중지된다는 것을 염려 할 필요가 없습니다. – Krypton

+0

첫 번째로 u 최대 타이머 수는 10이 될 것이라고 생각했지만 실제로는 UI 클릭 수에 따라 동적으로 최대 숫자가 변경됩니다. 또한 각 타이머는 해당 클릭 후 시작되어야하며 모든 클릭이 실행될 때까지 기다려야합니다. 나는 당신이 나의 포인트 – Sunny