System.currentTimeMillis()获取的是系统时间,是距离1970年1月1日开始计算的一个值;android.os.SystemClock.elapsedRealtime()获取从设备boot后经历的时间值。
System.currentTimeMillis()获取当前日期有意义,如当前是xxxx年xx月xx时xx分xx秒xxx毫秒,这个值在系统设置中可以更改的;而SystemClock.elapsedRealtime()计算某个时间经历了多长时间有意义,例如通话经历了多长时间,这个值是系统设置无关。
但是Android源码中计算通话时间是用System.currentTimeMillis()的,这个一般情况下是没有问题的。但是如果有人在设备建立通话后修改系统时间,那么通话结束后的时间值就不对了,日期往后调整个几年,通话时间就会显示有几年的
。

本文对比了System.currentTimeMillis()与android.os.SystemClock.elapsedRealtime()的功能与用途。前者用于获取当前确切时间,后者则记录设备启动后的运行时间。文章还特别提到了在Android中这两种方法在计算通话时长的应用及潜在问题。
862

被折叠的 条评论
为什么被折叠?



