0

私はアンドロイドプログラミングの初心者です。postDelayed に問題があり、呼び出したい値が 1 より大きい場合でも、ループ内で遅延が 1 回しか実行されません。

ここに私のコードがあります

protected void managerOfSound() {

    int size = tempq.size();

    for (int i = 0; i < tempq.size(); i++) {
        String u =tempq.get(i);



    //WHOLE
        if (u.equals("a4")){
            mp = MediaPlayer.create(this, R.raw.a4);


      handler.postDelayed(new Runnable(){
               @Override
               public void run() {  
                   mp.start();
               }            
            },2000);

      }else if (u.equals("b4")){
            mp = MediaPlayer.create(this, R.raw.b4);

       handler.postDelayed(new Runnable(){
               @Override
               public void run() {  
                   mp.start();
               }            
            },2000);
       }
   }
}

例えば

メディアプレーヤーを再生する前に、呼び出したい値の数に応じて、2 秒とさらに 2 秒の遅延が必要です...たとえば、値は a4、a4、a4 です。値が呼び出されるたびに 2 秒の遅延が必要です。これでmoを助けることができる人はいますか?前もって感謝します!:)

4

2 に答える 2

4

postDelayed問題は、for ループ内から実行していることです。ハンドラーを n 回実行しますが、同時に実行します。それらすべてを同時に開始します (for ループを終了するのに 1 ミリもかからないため)。時間をかける必要がありますcounter。何かのようなもの

handler.postDelayed(new Runnable(){
           @Override
           public void run() {  
               mp.start();
           }            
        },countr += 2000);
于 2015-03-10T21:12:06.980 に答える