は、必ずしも正確ではなく最初の呼び出しには全く正確性、Androidで正確なタイマーを作成するには?私はハンドラを試してみました
CountDownTimer、正確な時間のほとんどと
TimerTaskをを得ませんでした。
シナリオ:
私は特定の時間の後に、音の再生を停止しようとしています。
コード
TimeTask task = new TimeTask();
Timer timer = new Timer();
task.setMediaPlayer(mediaPlayer);
timer.schedule(task, 400);
mediaPlayer.start();
呼び出すと、私はTimerTaskをを拡張するクラスに与えているのMediaPlayerを作成しました。特定の時間が経過するとMediaPlayerが解放されます。それが正常に動作しますが、それは十分必ずしも正確ではありませんTimerTaskを
private MediaPlayer mMediaPlayer = new MediaPlayer();
public void setMediaPlayer(MediaPlayer mediaPlayer) {
this.mMediaPlayer = mediaPlayer;
mMediaPlayer.start();
}
@Override
public void run() {
ListIterator<MediaPlayer> iterator = SoundboardMenu.mMediaPlayerList.listIterator();
while (iterator.hasNext()) {
MediaPlayer iteratedPlayer = iterator.next();
if (iteratedPlayer.equals(mMediaPlayer)) {
iteratedPlayer.release();
iterator.remove();
break;
}
}
}
を拡張
クラス。
TimerTaskを継承しているクラスを呼び出してからもう一度呼び出すと、5秒以上待つと、わずかに遅延とサウンド再生時間が長くなります。私たちがそれを繰り返し呼び出すと、私たちは常に少し遅れて遅延を取得します。
あなたはどのくらい時間をかけようとしていますが、正確とはどういうことを考えていますか? 「正確な時間」と「常に正確だが最初の呼び出しでは」とはどういう意味ですか? – Falmarri