網(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
相關(guān)推薦
- 2022-07-20 python出現(xiàn)RuntimeError錯(cuò)誤問(wèn)題及解決_python
- 2022-06-18 Android?ScrollView實(shí)現(xiàn)滾動(dòng)超過(guò)邊界松手回彈_Android
- 2022-05-23 Android利用Palette實(shí)現(xiàn)提取圖片顏色_Android
- 2023-05-07 numpy.concatenate函數(shù)用法詳解_python
- 2022-12-05 深入了解C++封閉類的定義與使用_C 語(yǔ)言
- 2022-04-18 python使用py2neo創(chuàng)建neo4j的節(jié)點(diǎn)和關(guān)系_python
- 2022-08-23 python實(shí)現(xiàn)GATK多線程加速示例_python
- 2023-02-12 Android?onbackpressed實(shí)現(xiàn)返回鍵的攔截和彈窗流程分析_Android
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支