Android 如何在未来的特定时间以纳秒的精度调用方法

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

我试图在未来的特定时间以纳秒的精度向BTRelay发送命令。我需要以纳秒的精度多次延迟发送命令。因此,为了提供延迟,我使用SystemClock.elapsedRealtimeNanos()和While循环。我的500毫秒延迟代码-

// 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的时差)

  • 500毫秒
  • 500毫秒
  • 505ms
  • 500毫秒
  • 500毫秒
  • 500毫秒
  • 500毫秒
  • 500毫秒
  • 500毫秒
  • 500毫秒
  • 第二轮:

  • 500毫秒
  • 500毫秒
  • 500毫秒
  • 500毫秒
  • 505ms
  • 500毫秒
  • 500毫秒
  • 500毫秒
  • 500毫秒
  • 520毫秒
  • 第三轮:

  • 500毫秒
  • 505ms
  • 500毫秒
  • 500毫秒
  • 505ms
  • 505ms
  • 500毫秒
  • 505ms
  • 500毫秒
  • 510ms
  • 请告诉我如何在延迟时间内达到纳秒级的精度。
    提前感谢。

    从Android转向一些实时操作系统(RTO)。Android不是实时操作系统,也不能保证你能达到那样的计时准确度。谢谢你的评论。但是安卓有没有什么方法可以保证我几毫秒(最多5到10毫秒)的准确度?正如我们在第二轮中所看到的,差异达到了520毫秒。“但是在android中有没有任何方法可以保证我几毫秒(最多5到10毫秒)的准确性?”——没有任何关于计时的保证。