我有一个简单而经典的声明,即每 200 毫秒播放一个声音(节拍器)。
我使用处理程序编写它,然后以另一种方式使用线程。两种方式的问题都是一样的:当我按下硬件主页按钮时,或者当我按下按钮打开 ListView 时,节拍器会严重减速一段时间。
这个问题(不是那么严重,但存在)也代表什么都不做,将应用程序留在前台。
有任何想法吗?
这是代码:
公共类节拍器实现 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);
}
};