System.currentTimeMillis SystemClock.uptimeMillis SystemClock.elapsedRealtime
Thread.sleep SystemClock.sleep Thread.sleep()、Object.wait()、System.nanoTime() 等都是使用 SystemClock.uptimeMillis。
SystemClock.elapsedRealtime 用于计时等。
handler 把message放入messagequeue,MessageQueue是一个单行链表,根据when进行插入。
链表头时间段,链表尾时间长。
handler sendmessage 时 message.when = SystemClock.uptimeMillis + delayMillis
looper遍历messageQuere,会对比 when,如果不可执行,调用 nativePollOnce进行阻塞;
如果这时候有新的message插入messageQueue,会调用 nativeWake 进行激活。
nativePollOnce 表示所有可执行消息已完毕,等待下一条可执行消息。