2013-04-10 53 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

感謝,唯一的問題是我不知道的最大值,並會使用依賴。另外,我希望每次點擊都會啓動相應的計時器。在你的代碼中,我想你一起開始,那不會工作 – Sunny 2013-04-10 10:24:35

+0

我錯了你的意思。在上面的代碼中,timertask不會彼此共享,所以您不必擔心它會停止其他計時器。 – Krypton 2013-04-10 10:35:46

+0

首先看到你已經假定最大的定時器數量是10,但它可以是任何東西,事實上,最大數量會根據UI點擊次數動態改變。此外,每個計時器必須在各自點擊之後啓動,而不是等到所有點擊都已發出。我希望你能得到我的觀點 – Sunny 2013-04-10 10:42:51