Handler的post系列方法用来执行一个线程。
比如:
mhandler.postDelayed(runnable, 1000);
Handler的postDelayed方法其实也是通过sendMessageDelayed方法实现的。
public final boolean postDelayed(Runnable r, long delayMillis)
{
return sendMessageDelayed(getPostMessage(r), delayMillis);
}
Runnable参数经过getPostMessage方法封装成一个Message。
private static Message getPostMessage(Runnable r) {
Message m = Message.obtain();
m.callback = r;
return m;
}
sendMessageDelayed方法会对延迟时间进行处理,即当前时间加延迟的时间,就是这个消息需要执行的时间了。SystemClock.uptimeMillis()表示从开机到现在的毫秒数
public final boolean sendMessageDelayed(Message msg, long delayMillis)
{
if (delayMillis < 0) {
delayMillis = 0;
}
return sendMessageAtTime(msg, SystemClock.uptimeMillis() + delayMillis);
}
之后调用Mess