У меня возникли проблемы с достижением адекватной производительности в реальном времени из моего приложения, и я удивляюсь, что я разработал его неоптимально. Требуется, чтобы приложение воспроизводило звук и рисовало линию на Canvas
в указанный пользователем интервал времени.
У меня есть Thread
, который спит в течение заданного пользователем интервала времени, просыпается и использует Handler
и Runnable
для выполнения требуемого рисования и воспроизведения звука. Когда я запускаю приложение, ритм иногда устойчив, но в других случаях вы можете увидеть эффект GC и случайные условия предупреждения из AudioFlinger
.
Является ли наилучшим подходом иметь сообщение Timer
обратно в ветку GUI через Handler / Runnable? Есть ли что-то, что я могу сделать, чтобы повысить приоритет моего приложения, пока оно видно, чтобы другие приложения и действия Android с меньшей вероятностью прерывали его? Нужно ли использовать NDK для доступа к функциям реального времени, отсутствующим в Java API?