Android通过时间戳获取时间间隔

阅读Volley源码的时候,看到了Volley中打时间戳的方式:

SystemClock.elapsedRealtime()

第一次看到这个类,就很好奇为什么不用大家耳熟能详的:

System.currentTimeMillis()

看了下SystemClock的源码,里面的对于此的介绍是:

1,elapsedRealtime()获取到的是从系统启动开始至调用时所流逝的毫秒数。

2,System.currentTimeMillis()的问题是,其获取的是系统时间,而系统时间可以被轻易改动。如果在两个时间戳之间,系统时间发生了修改,就会导致时间计算不准,甚至得出很离谱的数据。

3,还有一个方法:uptimeMillis(),它的时间也是从系统开启时计时,但是会随着系统进入睡眠状态而停止计时。一些系统的方法如Thread#sleep(long)、Object#wait(long)、System#nanoTime就是依赖这个方法的。

对于我们来说,使用SystemClock.elapsedRealtime()将能够得到更准确的时间。

SystemClock完整包名是:android.os.SystemClock

里面可以查看到更详细的介绍。