我在从我的应用程序中获得足够的实时性能时遇到了一些困难,并且想知道我是否已经对其进行了次优架构设计。要求应用程序以用户指定的时间间隔播放声音并在 Canvas
上画一条线。
我有一个 Thread
,它在用户指定的时间间隔内休眠,唤醒并使用 Handler
和 Runnable
来执行所需的操作绘图和声音播放。当我运行该应用程序时,节拍有时很稳定,但其他时候,您可以从 AudioFlinger
中看到 GC 和随机警告条件的效果。
让 Timer
线程通过 Handler/Runnable 回发到 GUI 线程是最好的方法吗?我可以做些什么来提高我的应用程序的优先级,同时它是可见的,以便其他应用程序和 Android Activity 不太可能中断它?我是否需要使用 NDK 来访问 Java API 中不存在的实时功能?
最佳答案
听起来您想要的是一个游戏循环。有很多关于创建游戏循环的教程,这些游戏循环的时间比 sleep 时间更一致,例如 simple java android game loop.您可以尝试根据该术语进行搜索,看看是否有帮助。
关于用于实时应用程序的 Android 架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2380774/