SystemClock类

在handler设置了延时时间,如果用户在这期间设置了系统时间,那么handler里面的事件可能会混乱,不是按预期时间延期。handler里面用的是currentTimeMillis时间,也就是系统时间,该时间可能会向前或向后不可预知地跳越。

System.currentTimeMillis() 系统时间。这个时间会用SystemClock.setCurrentTimeMillis来改变。这个setCurrentTimeMillis会向前或向后设置时间。

public static boolean setCurrentTimeMillis(long millis) 设置当前的"墙"时间,要求调用进程有许可权限。返回是否成功。

有时候为了稳定计时,需要一些稳定向后的时间。下面罗列其他稳定的向后的时间。


public static long currentThreadTimeMillis() 返在当前线程运行的毫秒数。

public static long elapsedRealtime() 返回系统启动到现在的毫秒数,包含休眠时间。

public static long elapsedRealtimeNanos() 返回系统启动到现在的纳秒数,包含休眠时间。

public static long uptimeMillis() 返回系统启动到现在的毫秒数,不包含休眠时间。就是说统计系统启动到现在的非休眠期时间。

SystemClock类里面的其他方法。

public static void sleep(long ms) 等待给定的时间。这个是SystemClock.sleep,和Thread.sleep(millis)类似,但是它不会抛出InterruptedException异常。事件被推迟到下一个中断操作。该方法直到指定的时间过去才返回。

参考链接:

https://developer.android.com/reference/android/os/SystemClock.html#currentThreadTimeMillis()

https://developer.android.com/reference/android/os/SystemClock.html#uptimeMillis()

https://developer.android.com/reference/java/lang/System.html#currentTimeMillis()

https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtime()


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 long8086@foxmail.com

文章标题:SystemClock类

文章字数:396

本文作者:Okloong

发布时间:2020-01-07, 09:10:06

最后更新:2020-01-14, 23:14:20

原始链接:https://okloong.com/2020/01/07/SystemClock/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏