SystemClock.sleep和Thread.sleep源码分析
16lz
2021-01-24
一、在android中休眠3s钟有2中方法:
1、SystemClock.sleep(3000);
2、Thread.sleep(3000);
二、通过系统源码区别
1、SystemClock.sleep(long ms)源码:
public static void sleep(long ms) { long start = uptimeMillis(); long duration = ms; boolean interrupted = false; do { try { <span style="color:#ff0000;"> Thread.sleep(duration);</span> } catch (InterruptedException e) { interrupted = true; } duration = start + ms - uptimeMillis(); } while (duration > 0); if (interrupted) { // Important: we don't want to quietly eat an interrupt() event, // so we make sure to re-interrupt the thread so that the next // call to Thread.sleep() or Object.wait() will be interrupted. Thread.currentThread().interrupt(); } }有源码可知SystemClock.sleep还是调用 Thread.sleep
Thread.sleep(long time)源码:
public static void sleep(long time) throws InterruptedException { Thread.sleep(time, 0); }
public static void sleep(long millis, int nanos) throws InterruptedException { VMThread.sleep(millis, nanos); }
最终调用到</span>VMThread类源码,再调用到底层
<pre name="code" class="java"> static native void sleep (long msec, int nsec) throws InterruptedException;
3、所以在android开发者建议使用 Thread.sleep(long time)方法
更多相关文章
- 面试篇--android下网络通讯机制(三种网络通讯方式)
- Android使用Jsoup解析Html表格的方法
- Android(安卓)Studio Gradle 重命名输出App或者Library的文件名
- Android之getSharedPreferences与getDefaultSharedPreferences的
- Android之基本常见知识 getwindow() requestWindowFeature()方法
- Android(安卓)StateMachine和AsyncChannel
- RecycleView报错:Error inflating class android.support.v7.widg
- android 事件分发机制源码解析
- Android-Fresco系列6 图片解码