android - Android - 交换系统。SystemClock.uptimeMillis() 的 currentTimeMillis() - 含义是什么
问题描述
我试图编写以下函数,它给定一个未来的时间会告诉我到那个时间还有多少毫秒:
fun millisFromNow(futureTime: Long): Long {
val now = Date(System.currentTimeMillis())
val endDate = Date(futureTime * 1000L)
return (endDate.time - now.time)
}
但是用户可以更改系统时钟,然后 currentTimeMillis 将不准确.....相反,我可以使用 uptimeMillis:
fun millisFromNow(futureTime: Long): Long {
val now = Date(SystemClock.uptimeMillis())
val endDate = Date(futureTime * 1000L)
return (endDate.time - now.time)
}
自 2004 年以来,它似乎可以在几乎所有设备上运行,对吗?我是否以这种方式正确使用它?因为 currentTimeMillis 是纪元时间,但 uptimeMillis 是自上次启动以来的时间,并假设 JVM 正在运行。所以对我来说这段代码没有意义。? 我只是使用这个函数来启动一个 countdownTimer,所以我只调用它一次。
更新:只是替换它会给出错误的值。只是 system.currentTimeMillis 给出了正确的倒计时。为了安全起见,我可以用什么替换它,这样我就可以在现在和未来的某个时间之间获得正确的毫秒倒计时
解决方案
推荐阅读
- c# - 返回单个类型或类型列表?
- python - python自动重采样数据
- facebook - 质疑 Facebook 政策和应用程序开发人员
- thingsboard - Thingsboard 自定义规则节点 - 定义的配置指令“myTestNodeConfig”不可用
- jquery - 单击任意位置以关闭切换菜单,并且单击后不切换所有子菜单?
- c# - C# - 类库项目 - 构建项目时无法更新 App.config 文件
- jenkins - 当 CPU 使用率高时,Jenkins 使 Kubernetes 节点卡住
- computer-vision - “R-CNN 变体中使用的 BB 回归算法”与“YOLO 中的 BB”定位技术有什么区别?
- mysql - 每周每天每小时的登录次数?
- java - 如何将 cookie 添加到 Undertow 的 ClientRequest?