Android 如何在未来的特定时间以纳秒的精度调用方法
我试图在未来的特定时间以纳秒的精度向BTRelay发送命令。我需要以纳秒的精度多次延迟发送命令。因此,为了提供延迟,我使用SystemClock.elapsedRealtimeNanos()和While循环。我的500毫秒延迟代码-Android 如何在未来的特定时间以纳秒的精度调用方法,android,performance,scheduled-tasks,Android,Performance,Scheduled Tasks,我试图在未来的特定时间以纳秒的精度向BTRelay发送命令。我需要以纳秒的精度多次延迟发送命令。因此,为了提供延迟,我使用SystemClock.elapsedRealtimeNanos()和While循环。我的500毫秒延迟代码- // store the time after 500ms long testElapsedTime = SystemClock.elapsedRealtimeNanos() + (500 * 1000000l); // loop for delay while(t
// store the time after 500ms
long testElapsedTime = SystemClock.elapsedRealtimeNanos() + (500 * 1000000l);
// loop for delay
while(testElapsedTime - SystemClock.elapsedRealtimeNanos() >= 0l)
{
}
为了测试上述逻辑,我用它执行了一个测试。我的测试代码是-
// Log 1
Log.d( "Test the our delay logic start loop" , "Test the our delay logic start loop");
for(int i = 1 ; i <= 10 ; i++)
{
// Log 2
Log.d( "Test the our delay logic Start"+ i , "Test the our delay logic Start 500 " + i);
testElapsedTime = SystemClock.elapsedRealtimeNanos() + (500 * 1000000l);
// Loop for delay
while(testElapsedTime - SystemClock.elapsedRealtimeNanos() >= 0l)
{
}
// Log 3
Log.d( "Test the our delay logic End"+ i , "Test the our delay logic 600 End" + i);
}
// Log 4
Log.d( "Test the our delay logic end loop" , "Test the our delay logic end loop" );
//日志1
Log.d(“测试我们的延迟逻辑启动回路”,“测试我们的延迟逻辑启动回路”);
对于(整数i=1;i=0l)
{
}
//日志3
Log.d(“测试我们的延迟逻辑端”+i,“测试我们的延迟逻辑600端”+i);
}
//日志4
Log.d(“测试我们的延迟逻辑结束循环”,“测试我们的延迟逻辑结束循环”);
我在测试代码3上面运行了一次。当我看到日志2和日志3的时差时,大多数时间是500毫秒,但有些时间会增加几毫秒。3轮的时差如下所示:
第1轮:(日志2和日志3的时差)
提前感谢。从Android转向一些实时操作系统(RTO)。Android不是实时操作系统,也不能保证你能达到那样的计时准确度。谢谢你的评论。但是安卓有没有什么方法可以保证我几毫秒(最多5到10毫秒)的准确度?正如我们在第二轮中所看到的,差异达到了520毫秒。“但是在android中有没有任何方法可以保证我几毫秒(最多5到10毫秒)的准确性?”——没有任何关于计时的保证。