2016-04-17 18 views
0

こんにちは私はそのような動作を実装したい: 毎秒私はリストから文字列を取得し、それを印刷したい。 (実際に私はに私の見解たい:。。setVisibility(View.Visibleを)、それは同じことだforループ内の遅延

final Handler handler = new Handler(); 
    for (String str : layoutsList) { 
     handler.postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       Log.d("LevelOneFragment", "tick" + str); 
       i++; 
      } 
     }, 1000); 

    } 

しかし、このソリューションが動作しません どのように私はこれを正しく行う必要があります

答えて

0

を。それは、仕事の各アイテムは、本質的に同時に発生することを意味しますループはすぐに実行されるからです。

代わりに、(i + 1)* 1000のような遅延が増えて、各作業項目のスケジュール設定を試してみてください。

for (int i = 0; i < layoutsList.size(); i++) { 
    final String str = layoutsList.get(i); 
    handler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      Log.d("LevelOneFragment", "tick" + str); 
     } 
    }, (i+1)*1000); 
0

なぜ?あなたはUIスレッドをブロックしたいですか?:-(今あなたが1000ミリ秒でハンドラのすべての作業の遅延を設定している

for (String str : layoutsList) { 
    Log.d("LevelOneFragment", "tick" + str); 
    i++; 
    Thread.sleep(1000); 
} 
+0

UIブロッキングは実際には悪いことです!同じことをすることはできますが、UIをブロックすることはできませんか?私は私の答えを編集しました。 –

関連する問題