2016-09-27 87 views
-3

任何人都會有想法,Timer將根據持續時間數組進行計劃,如果一次完整的持續時間數組長度將再次從第一個開始。在這個有些循環中,完美工作有時會崩潰,並通過arrayoutofboundsexception。任何一個甘蔗幫幫我?定時器在android中不能正常工作

int[] duration={10000,2000,8000}; 
int layoutIncrment=-1; 
private void layoutRotate() 
{ layoutIncrment++; 
    Timer timer = new Timer(); 
    timer.schedule(new TimerTask() 
    { public void run() 
     { 
      if((duration.length-1) <= layoutIncrment) 
       layoutIncrment=-1; 

      layoutRotate(); 
      Log.i("Rotation",String.valueOf(layoutIncrment)); 
    } },duration[layoutIncrment],100000); 
} 
+0

我可以知道這條線怎麼了? –

+0

我得到的答案每個循環做取消定時器,否則所有定時器在活着的階段。 –

回答

0

爲什麼不試試這樣。它會繼續在while循環中運行..只有你想要的。對?

int n=1; 

    while(n>0) 
    { 
    for(int i=0;i<duration.length;i++) 
    { 

    new Handler().postDelayed(new Runnable() { 
    @Override 
    public void run() { 
    //add ur code here 
    } 
    }, duration[i]); 
    } 
    } 
+0

它不工作。這個例子不斷循環。我想從一個持續時間延遲到另一個持續時間。一旦長度完成後,將從第一個持續時間開始.. –

+0

使用處理程序代替然後 –

+0

如果你把處理程序或定時器放在for循環中,for循環連續運行,循環之間沒有延遲。 –