У меня есть простая классическая инструкция: каждые 200 миллисекунд воспроизводят звук (метроном).Metronome Timer slowdown (через Handler, или Threads too)
Я написал его с помощью Handlers, а затем по-другому, используя Threads. Проблема одинакова в обоих направлениях: когда я нажимаю кнопку домашней домашней машины или просто, когда я нажимаю кнопку, чтобы открыть 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);
}
};
Это проблема с точными таймингами на таких устройствах. Не уверен, что есть решение вообще, не говоря уже о простом – Falmarri