2017-02-10 40 views
1

如何在Android中以納秒爲單位查找自Epoch以來的時間?以納秒爲單位測量曆元時間 - Android

以下API是有,但他們只給了一次開機以來

  1. SystemClock.elapsedRealtimeNanos() - 啓動後的時間,但包括深層睡眠時間
  2. System.getnano() - >這是向上,因爲沒有深度睡眠時間啓動時間。

對於時代,似乎只有1個API可用。

  • System.currentTimeMillis() - >以毫秒爲單位顯示自紀元以來的時間。

是否有類似的API /一種新的方法來獲得自納秒以來的時間。

PS:自從時代以來的時間意味着自1970年1月1日以來逝去的時間。

+0

Java沒有提供'clock_gettime'函數,所以你選擇更準確的時間是通過JNI,也會有一個開銷調用JNI,所以它不會100%準確 –

+0

@Rod_Algonquin謝謝。我看到System.currentTimeMillis()也是一個本地調用。所以我猜,這對我來說可以使用JNI,但是我在android中尋找可用的APIS,可以給我納秒。我想現在還沒有可用的。 –

+0

@Rod_Algonquin我想看看currentTimeMillis()的本地實現,但無法找到源。如果你知道它在哪裏,請與我分享..它會幫助我。 –

回答

0

您可以使用TimeUnit類將millis轉換爲nanos。嘗試

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

這隻會將其轉換。這不準確。我想測量的實際時間以納秒爲單位 –

0

當設備關閉時,設備沒有如此準確的時鐘來計算納秒。 CPU有,但它只從開始算起。

+0

我不這麼認爲。您可以使用clock_gettime(CLOCK_REALTIME,&ts)從本機代碼中獲取nano秒。我從本地代碼驗證它。它工作正常。我期待從android應用程序獲得類似的值,而不使用JNI /本機代碼。 –

相關問題