2017-02-10 7 views
1

Android에서 Epoch 이후의 시간을 나노초 단위로 찾는 방법은 무엇입니까? APIS 아래나노초 단위의 획기적인 시간 측정 - Android

는 사용할 수 있지만 그들은 단지 부팅

  1. SystemClock.elapsedRealtimeNanos() 이후의 시간을 제공 - 부팅 이후 시간을하지만 깊은 수면 시간을 포함
  2. System.getnano() ->이 깊은 수면 시간없이 부팅 이후 시간까지입니다.

Epoch 시간에는 1 개의 API 만 사용할 수 있습니다.

  • System.currentTimeMillis() -> 에포크 (Epoch) 이후의 시간을 밀리 초 단위로 보여줍니다.

나노초 단위로 시간을 가져 오는 비슷한 API/새로운 접근 방식이 있습니까?

PS : Epoch 이후 경과 한 시간, 1970 년 1 월 1 일부터 경과 한 시간을 의미합니다.

+0

Java는 'clock_gettime' 기능을 제공하지 않으므로 정확한 타이밍을 선택하는 것이 JNI를 통해 이루어지며 JNI를 호출하는 오버 헤드가 있으므로 100 % 정확하지는 않습니다 –

+0

@Rod_Algonquin 감사합니다. System.currentTimeMillis()가 네이티브 호출이기도합니다. 그래서 나는 JNI를 사용하는 것이 괜찮을 것이라고 생각하지만 안드로이드에서 사용할 수있는 APIS를 찾고 있었는데 나노 초를 줄 수 있습니다. 현재로서는 아무 것도 없습니다. –

+0

@Rod_Algonquin currentTimeMillis()의 기본 구현을 살펴보고 souce를 찾을 수 없습니다. 어디 있는지 알고 있으면 나와 공유하십시오 .. 도움이 될 것입니다. –

답변

0

TimeUnit 클래스를 사용하여 millis를 nanos로 변환 할 수 있습니다. 시도하십시오

long nanos = TimeUnit.MILLISECONDS.toNanos(System.currentTimeMillis()); 
+0

이렇게하면 변환됩니다. 그것은 정확하지 않을 것이다. 나는 실제 시간을 1 초 단위로 측정하고 싶습니다. –

0

기기가 꺼져있을 때 기기의 정확한 시계가 나노 세컨드로 계산되지 않습니다. CPU가 있지만 처음부터 계산됩니다.

+0

저는 그렇게 생각하지 않습니다. 원시 코드에서 clock_gettime (CLOCK_REALTIME, & ts)을 사용하여 나노초를 얻을 수 있습니다. 네이티브 코드에서 확인했습니다. 그것은 잘 작동합니다. JNI/네이티브 코드를 사용하지 않고도 Android 응용 프로그램과 비슷한 가치를 찾고 있습니다. –