2016-09-27 4 views
-3

いずれかのアイデアが与えられます。タイマーはデュレーション配列に基づいてスケジュールされます。このループでは、完璧に動作するいくつかの時間がクラッシュし、arrayoutofboundsexceptionによって発生します。いずれかの杖が私を助けますか?アンドロイドでタイマーが正しく機能しない

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ループで走り続けるでしょう。thatsだけが欲しいです。右?

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

動作しません。この例は継続的にループしています。ある期間から別の期間までの遅延が欲しい。長さが終わったら、最初のDurationから開始されます。 –

+0

代わりにハンドラを使用してください。 –

+0

ハンドラまたはタイマーをforループに入れると、連続して実行するループではループ間に遅延がありません。 –

関連する問題