我需要測量Android上的較長運行時間,並且可能會在兩者之間重新啓動設備。在Android上測量很長的運行時間(重新啓動)
從我所瞭解的情況來看,System.nanoTime()
在每次設備重啓時都會重置,並且System.currentTimeMillis()
由於用戶可以更改而不可靠。
,我想出了是聽ACTION_SHUTDOWN
和BOOT_COMPLETED
,使用System.currentTimeMillisec()
來計算經過時間(用戶無法更改時鐘時間,而設備處於關閉狀態,希望:)),並把它添加到唯一的解決辦法最後System.nanoTime()
我在關閉之前。
我老實說不喜歡這個解決方案,因爲它非常昂貴(我需要聽2個廣播事件)並且不準確,但我找不出任何其他方式來做到這一點。
任何想法?另外一個本地解決方案對我來說也很好。
我不認爲有更好的方法。至少你必須收聽兩個系統廣播,BOOT_COMPLETED和ACTION_SHUTDOWN。您可以優化這兩者的剩餘內容。但我相信這是你必須做的最低要求。 –
http://stackoverflow.com/questions/3523442/difference-between-clock-realtime-and-clock-monotonic應該是這兩者背後的時間。 Android設備會根據外部時間源(可能是NTP,GSM,GPS,?)自動調整'System.currentTimeMillisec()' - 無需用戶干預,可能在啓動時(即在BOOT_COMPLETED之前)。您也可以使用外部時間服務,但需要網絡訪問權限。 – zapl
願意重寫平臺時鐘以擊敗你的用戶很可能是一個只需攔截/修補正在使用的任何系統調用來讀取它們的用戶。 –