日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

記關于Android開發中使用System.currentTimeMillis()不準確的問題

作者:學習中-。- 更新時間: 2022-02-14 編程語言

在安卓開發中我們想要獲取當前的時間一般都會直接使用系統提供的API System.currentTimeMillis() 輕松快捷獲取當前的時間戳

返回以毫秒為單位的當前時間,返回的是當前時間與協調世界時 1970 年 1 月 1 日午夜之間的時間差(以毫秒為單位測量)

對于一些需要獲取時間差值很小的場景(比如統計資源加載時間,系統啟動速度,首幀渲染時長…)是沒有問題的,可如果是類似統計用戶的使用時長、由當前時間控制系統運行邏輯等場景,這個值就不那么可靠了。
那么可以去使用服務器的時間,這樣會可靠許多。畢竟用戶不能隨意修改服務器上的絕對時間。

解決方案
我們通過調用用戶無法修改的APISystemClock.elapsedRealtime() 來獲取系統運行時長

返回系統啟動到現在的時間,包含設備深度休眠的時間。該時鐘被保證是單調的,即使CPU在省電模式下,該時間也會繼續計時。該時鐘可以被使用在當測量時間間隔可能跨越系統睡眠的時間段。

用戶啟動app時與服務端建立連接通信,此時記錄下來自服務器上的時間戳 ServerTimeStamp 和此時的SystemClock.elapsedRealtime()
在需要獲取當前時間時,獲取此時的系統運行時間,三者運算即可得到更為準確的當前時間值了

原文鏈接:https://blog.csdn.net/qq_39373532/article/details/112514281

欄目分類
最近更新