今天的主题,从头到尾就两个字:时间。 坚持看完整篇blog,一定会有收获。 开发中经常要用到时间戳,下面将会详细介绍,如下系统函数的功能和差异
今天的主题,从头到尾就两个字:时间。
坚持看完整篇blog,一定会有收获。
开发中经常要用到时间戳,下面将会详细介绍,如下系统函数的功能和差异 :
System.nanoTime() System.currentTimeMillis() SystemClock.uptimeMillis() SystemClock.elapsedRealtime() SystemClock.currentThreadTimeMillis 0、时间的单位:秒:second
毫秒:Millisecond
微妙:Microsecond
纳秒:nanosecond
1秒 = 1000毫秒;1毫秒=1000微秒, 1微秒=1000纳秒,
注意:【纳秒的单位千万别弄错了,马上我们就会用到这个单位】
1毫秒 = 1000 000纳秒;一百万纳秒
1毫秒 = 1000 000纳秒;一百万纳秒
1毫秒 = 1000 000纳秒;一百万纳秒
一 、System.nanoTime()单位:纳秒
Android系统开机到当前的时间
系统设置修改时钟,不影响该时间。
重启android系统后该值会重置为0。
二、System.currentTimeMillis()单位:毫秒(milliseconds)
从1970.1.1 UTC 零点开始到当前的时间
修改系统时钟,会直接修改该时间。可以通过该值推算当前系统时钟的日期和时间。
重启手机对该时间无影响。
三、System.nanoTime()有什么用呢?System.nanoTime:返回的时间单位是纳秒,他是毫秒的百万分之一。远比毫秒的颗粒度要低。
如下情况,使用,System.currentTimeMillis,计算不出时间差,但是System.nanoTime可以:
public class TimeStampMain {
public static void main(String[] args) {
long milliTimeBegin = System.currentTimeMillis();
long nanoTimeBegin = System.nanoTime();
for (int i = 0; i < 200; i++){
}
long nanoDuration = System.nanoTime() - nanoTimeBegin;
long milliDuration = System.currentTimeMillis() - milliTimeBegin;
System.out.println("循环100次消耗的时间:nanoDuration=" + nanoDuration + "纳秒, milliDuration=" + milliDuration + "毫秒");
}
}
四、SystemClock
long uptimeMillis();
long elapsedRealtime();
long currentThreadTimeMillis();
SystemClock.currentThreadTimeMillis()
注意currentThreadTimeMillis()返回的是当前线程running的时间,注意是running的时间。我们通过如下例子来理解什么叫着running的时间。并且单位是毫秒。
new Thread(){
@Override
public void run() {
try {
Log.w(TG, "currentThreadTimeMillis1=" + SystemClock.currentThreadTimeMillis());//日志1
Thread.sleep(20000);//20ms
Log.w(TG, "currentThreadTimeMillis2=" + SystemClock.currentThreadTimeMillis());//日志2
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}.start();
你猜,日志输出currentThreadTimeMillis1=?currentThreadTimeMillis2=?
输出日志:
再次回到我们的主题,时间。
大叔,有一次面试“某福报厂”,面试官问了一个问题,让我陷入沉思了很久很久很久……以下是面试官的原话:
在我们公司,有着很多狠多的学霸,假如,你加入我们之后,你会发现很多来自国内外名校,智商很高的同事。他们学习能力很强。你怎么能做到不落后甚至超越他们呢?
大叔,思考了很久很久,终于找到了适合大叔的答案:时间
程序员,面对快速迭代的技术,持续学习的能力无疑是杀手锏,短时间我们学习的速度赶不上学霸,但是持之以恒的学习,一个个技术细节慢慢啃,夜以继日的啃,不敢说能赶上大部分学霸,最起码能让研发能力领先在中上水平以上。
随着时间的力量,这个领先会越来越领先。
时间可以是把杀猪刀,时间也可以是把屠龙刀。
逝者如斯夫,我相信时间的力量,坚持的力量。
积跬步,终将至千里;积小流,必成江海。
原文连接:https://juejin.im/post/5eb00f786fb9a043340bf6a8
更多android技术blog:Https://juejin.im/collection/5eaff93ee51d45364b88a912
关键字:
时间戳; 开发技术如何与不落后学霸; 技术能力如何不落后; 程序员必备技能; currentTimeMillis; nanoTime; SystemClock;
安卓开发大叔 原创文章 34获赞 24访问量 24万+ 关注 私信 展开阅读全文
--结束END--
本文标题: android时间戳总结:System.nanoTime(),System.currentTimeMillis(),SystemClock
本文链接: https://lsjlt.com/news/29768.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-01-21
2023-10-28
2023-10-28
2023-10-27
2023-10-27
2023-10-27
2023-10-27
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0