0

CountDownTimer録音を開始する前に を作成しました。コードの一部:

if(bitRateBoolean && timeBoolean && name) {
             toast = Toast.makeText(getActivity(), "Registration will start in 5 seconds", Toast.LENGTH_SHORT);
                         toast.show();

             new CountDownTimer(5000, 1000) {

                  public void onTick(long millisUntilFinished) {
                      Toast.makeText(getActivity(), "seconds remaining: " + millisUntilFinished / 1000, 
                            Toast.LENGTH_LONG).show();

                  }

                  public void onFinish() {
                          toast.cancel();
                      rec();
                  }
               }.start();             

     }

5秒後にrec()開始し、トーストにカウントダウンが表示されるようにします。しかし、これはうまくいきません。カウントダウンを表示しますが、1 秒ではなく 2 秒ごとにカウントダウンしているようです。トーストが消えるまで 2 倍の時間待たなければなりません。コードに何か問題がありますか?

4

1 に答える 1

1

私がここで読んだことからのカウントダウンタイマー の問題は、2秒以上かかるため、トースト時間です。次の onClick は、最初の onClick が終了した後にのみ呼び出されます。トーストに 1 秒以上かかる場合 ('Toast.LENGTH_LONG' は確実に実行されます)、次の onTick の呼び出しは 1 秒後ではありません。

private static final int LONG_DELAY = 3500; // 3.5 秒
private static final int SHORT_DELAY = 2000; // 2 秒

これらは、LENGTH_LONG と LENGTH_SHORT の Toast のデフォルト値です。
私のアドバイスは、トーストの代わりにステータスバー通知を使用することです

于 2014-01-13T13:27:30.240 に答える