200 ミリ秒ごとにサウンド (メトロノーム) が再生されるという単純で古典的なステートメントがあります。
Handlers を使用して記述し、次に別の方法で Threads を使用して記述しました。問題はどちらの方法でも同じです。ハードウェアのホーム ボタンを押すか、単純にボタンを押して ListView を開くと、メトロノームがしばらくの間ひどく遅くなります。
この問題 (それほど強力ではありませんが、存在します) は、何もせずにアプリケーションをフォアグラウンドのままにすることも示しています。
何か案は?
コードは次のとおりです。
public class Metronome は Runnable を実装します{
private Handler mHandler = new Handler();
public static long mStartTime;
Main mainContext;
public Metronomo(Main context) {
mainContext = context;
}
public void play() {
mStartTime = System.currentTimeMillis();
mHandler.postDelayed(this, 100);
}
public final void stop(){
mHandler.removeCallbacks(this);
}
public void run(){
//play the ogg file in position 1
mSoundManager.playSound(1);
//reschedule the next playing after 200ms
mHandler.postAtTime(this, SystemClock.uptimeMillis() + 200);
}
};