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

學(xué)無(wú)先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

記關(guān)于Android開(kāi)發(fā)中使用System.currentTimeMillis()不準(zhǔn)確的問(wèn)題

作者:學(xué)習(xí)中-。- 更新時(shí)間: 2022-02-14 編程語(yǔ)言

在安卓開(kāi)發(fā)中我們想要獲取當(dāng)前的時(shí)間一般都會(huì)直接使用系統(tǒng)提供的API System.currentTimeMillis() 輕松快捷獲取當(dāng)前的時(shí)間戳

返回以毫秒為單位的當(dāng)前時(shí)間,返回的是當(dāng)前時(shí)間與協(xié)調(diào)世界時(shí) 1970 年 1 月 1 日午夜之間的時(shí)間差(以毫秒為單位測(cè)量)

對(duì)于一些需要獲取時(shí)間差值很小的場(chǎng)景(比如統(tǒng)計(jì)資源加載時(shí)間,系統(tǒng)啟動(dòng)速度,首幀渲染時(shí)長(zhǎng)…)是沒(méi)有問(wèn)題的,可如果是類似統(tǒng)計(jì)用戶的使用時(shí)長(zhǎng)、由當(dāng)前時(shí)間控制系統(tǒng)運(yùn)行邏輯等場(chǎng)景,這個(gè)值就不那么可靠了。
那么可以去使用服務(wù)器的時(shí)間,這樣會(huì)可靠許多。畢竟用戶不能隨意修改服務(wù)器上的絕對(duì)時(shí)間。

解決方案
我們通過(guò)調(diào)用用戶無(wú)法修改的APISystemClock.elapsedRealtime() 來(lái)獲取系統(tǒng)運(yùn)行時(shí)長(zhǎng)

返回系統(tǒng)啟動(dòng)到現(xiàn)在的時(shí)間,包含設(shè)備深度休眠的時(shí)間。該時(shí)鐘被保證是單調(diào)的,即使CPU在省電模式下,該時(shí)間也會(huì)繼續(xù)計(jì)時(shí)。該時(shí)鐘可以被使用在當(dāng)測(cè)量時(shí)間間隔可能跨越系統(tǒng)睡眠的時(shí)間段。

用戶啟動(dòng)app時(shí)與服務(wù)端建立連接通信,此時(shí)記錄下來(lái)自服務(wù)器上的時(shí)間戳 ServerTimeStamp 和此時(shí)的SystemClock.elapsedRealtime()
在需要獲取當(dāng)前時(shí)間時(shí),獲取此時(shí)的系統(tǒng)運(yùn)行時(shí)間,三者運(yùn)算即可得到更為準(zhǔn)確的當(dāng)前時(shí)間值了

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

欄目分類
最近更新