Архитектура Android для приложений реального времени - PullRequest
3 голосов
/ 04 марта 2010

У меня возникли проблемы с достижением адекватной производительности в реальном времени из моего приложения, и я удивляюсь, что я разработал его неоптимально. Требуется, чтобы приложение воспроизводило звук и рисовало линию на Canvas в указанный пользователем интервал времени.

У меня есть Thread, который спит в течение заданного пользователем интервала времени, просыпается и использует Handler и Runnable для выполнения требуемого рисования и воспроизведения звука. Когда я запускаю приложение, ритм иногда устойчив, но в других случаях вы можете увидеть эффект GC и случайные условия предупреждения из AudioFlinger.

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

Ответы [ 2 ]

3 голосов
/ 04 марта 2010

Звучит так, как будто вы хотите начать игру.Существует множество учебных пособий по созданию игровых циклов с более согласованным временем, чем просто сон, например, простой цикл Java-игр для Android. Вы можете попробовать поиск по этому термину, посмотрите, поможет ли он.

1 голос
/ 04 марта 2010

Также при попытке создания приложений реального времени (как в постоянно динамичных приложениях, а не научной системе реального времени ) вы должны избегать запуска сборщика мусора. Это занимает некоторое время и может восприниматься как отставание. Так что не создавайте объекты, которые вы должны немедленно утилизировать и т. Д.

...