概述
我在Android应用程序的(非UI)线程中循环生成计时事件,我需要这些事件以精确的时间间隔发生,(这里的精确意味着不会超过/ – 5毫秒).用户可以感知到/ -10毫秒(当然/ – 20毫秒)的任何错误.在这个循环的顶部,我做了一些其他计算需要花费不同的时间,但是在循环的底部,我需要在预先计算的时间发生事件.
我的非UI线程的一次尝试的高度简化版本(无异常处理)如下:
public final void run() {
long loopTime = 2500L;
long eventTime = (System.nanoTime() / 100000L) + loopTime;
while (true) {
calcutionsTakingVaryingAmountOfTime(); // takes 200 millisecs or less
long eventWait = eventTime - (System.nanoTime() / 100000L);
Thread.sleep(eventWait / 10L);
listener.onEvent();
eventTime = eventTime + loopTime;
}
}
它是对listener.onEvent()的调用,需要精确定时.
在上面的示例中,时序变量loopTime,eventTime和eventWait以十分之一毫秒为单位测量时间.测量当前时间的表达式(System.nanoTime()/ 100000L)同样是十分之一毫秒.
我绝对肯定calcutionsTakingVaryingAmountOfTime()总是少于200毫秒,而对listener.onEvent()的调用只有几毫秒.因此,当loopTime设置为2500L时,我的事件应该每250毫秒
最后
以上就是细腻心锁为你收集整理的android sleep 毫秒,如何减少Android中的Thread.sleep()延迟的全部内容,希望文章能够帮你解决android sleep 毫秒,如何减少Android中的Thread.sleep()延迟所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复