我正在尝试为Android设备创建音乐音序器应用程序,并希望了解如何实现坚如磐石的计时功能。
如果我将Runnable传递给Handler.postDelayed并指定延迟时间为x毫秒,那么Runnable是否保证在x毫秒的时间内执行?
如果我无法使用Handler实现稳定和准确的计时,还有哪些其他选项可供我使用?
提前谢谢
答案 0 :(得分:1)
我不认为“硬实时”编程是可能的。选项似乎是寻找发生事情时发出信号的事件。这可以通过创建自己的标志来完成,并在另一个线程中轮询该标志的值。
您可以使用CountDownTimer指定必须以毫秒为单位传递的特定时间长度。
您可以使用系统时钟并通过轮询已经过了多长时间来制作自己的计时器。
还有一个名为FileObserver的有用类,它允许您观看特定文件,并听取Opened和Closed等事件。使用这些信号,您可以知道是时候进入下一个操作了。
最糟糕的错误是在特定的硬件上发生了计时问题但在大多数情况下都不会发生。问题是,如果我不拥有所有这些,并找到时间问题很难。我希望其他人会对这个问题有更好或更多的答案。
答案 1 :(得分:1)
经过大量的谷歌搜索后,我设法在这里找到了答案:
http://masterex.github.com/archive/2012/05/28/android-audio-synthesis.html
处理程序,Thread.sleep()和计时器似乎不是它的方式。
感谢DrA的回答,很感激 - 抱歉没有尽快承认,我已经离开了一段时间。