【移动开发】Handler的sendMessageAtTime()和sendEmptyMessageDelay()区别
2014-10-12 13:21
459 查看
函数原型
uptimeMillis //sendMessageAtTime,即在确定的时间发送这个消息,这个时间通过这个参数指定这个时间由uptimeMillis传递
这两句是等效的,都是延时1秒将消息加入列队
msgHandle.sendMessageAtTime(msg, SystemClock.uptimeMillis()+1000);
msgHandle.sendMessageDelayed(msg, 1000)
sendMessageAtTime的uptimeMillis是相对系统开机时间的绝对时间,SystemClock.uptimeMillis()是当前开机时间。
源码
public boolean sendMessageAtTime (Message msg, long uptimeMillis)Message //待发送消息
uptimeMillis //sendMessageAtTime,即在确定的时间发送这个消息,这个时间通过这个参数指定这个时间由uptimeMillis传递
这两句是等效的,都是延时1秒将消息加入列队
msgHandle.sendMessageAtTime(msg, SystemClock.uptimeMillis()+1000);
msgHandle.sendMessageDelayed(msg, 1000)
sendMessageAtTime的uptimeMillis是相对系统开机时间的绝对时间,SystemClock.uptimeMillis()是当前开机时间。
源码
/** * Enqueue a message into the message queue after all pending messages * before (current time + delayMillis). You will receive it in * {@link #handleMessage}, in the thread attached to this handler. * * @return Returns true if the message was successfully placed in to the * message queue. Returns false on failure, usually because the * looper processing the message queue is exiting. Note that a * result of true does not mean the message will be processed -- if * the looper is quit before the delivery time of the message * occurs then the message will be dropped. */ public final boolean sendMessageDelayed(Message msg, long delayMillis) { if (delayMillis < 0) { delayMillis = 0; } return sendMessageAtTime(msg, SystemClock.uptimeMillis() + delayMillis); }
/** * Enqueue a message into the message queue after all pending messages * before the absolute time (in milliseconds) <var>uptimeMillis</var>. * <b>The time-base is {@link android.os.SystemClock#uptimeMillis}.</b> * You will receive it in {@link #handleMessage}, in the thread attached * to this handler. * * @param uptimeMillis The absolute time at which the message should be * delivered, using the * {@link android.os.SystemClock#uptimeMillis} time-base. * * @return Returns true if the message was successfully placed in to the * message queue. Returns false on failure, usually because the * looper processing the message queue is exiting. Note that a * result of true does not mean the message will be processed -- if * the looper is quit before the delivery time of the message * occurs then the message will be dropped. */ public boolean sendMessageAtTime(Message msg, long uptimeMillis) { boolean sent = false; MessageQueue queue = mQueue; if (queue != null) { msg.target = this; sent = queue.enqueueMessage(msg, uptimeMillis); } else { RuntimeException e = new RuntimeException( this + " sendMessageAtTime() called with no mQueue"); Log.w("Looper", e.getMessage(), e); } return sent; }
相关文章推荐
- 【Android消息处理机制】Handler中sendEmptyMessage与sendMessage的区别和sendMessageAtTime()与sendEmptyMessageDelay()区别
- 【Android消息处理机制】Handler中sendEmptyMessage与sendMessage的区别和sendMessageAtTime()与sendEmptyMessageDelay()区别
- 【Android消息处理机制】Handler中sendEmptyMessage与sendMessage的区别和sendMessageAtTime()与sendEmptyMessageDelay()区别
- 【Android消息处理机制】Handler中sendEmptyMessage与sendMessage的区别和sendMessageAtTime()与sendEmptyMessageDelay()区
- Handler 的sendEmptyMessage(int what)和sendMessage(Message msg)有啥区别?
- Handler 的sendEmptyMessage(int what)和sendMessage(Message msg)的区别?
- Handler 的sendEmptyMessage(int what)和sendMessage(Message msg)有啥区别?
- android的Handler中sendEmptyMessage与sendMessage的区别
- sendEmptyMessageAtTime和sendEmptyMessageDelayed的区别
- android的Handler中sendEmptyMessage与sendMessage的区别
- Handler 的sendEmptyMessage(int what)和sendMessage(Message msg)有啥区别?
- Handler 的sendEmptyMessage(int what)和sendMessage(Message msg)有啥区别?
- sendMessage和sendEmptyMessage的区别
- sendEmptymessage 和sendMessage的区别
- sendemptymessage 和sendmessage的区别
- android handler sendEmptyMessage与sendMessage
- sendEmptyMessage And sendMessage
- Android中Handler的sendEmptyMessage的理解
- android sendEmptyMessage()和sendMessage()误用导致handleMessage出现错误
- sendMessage&sendEmptyMessage异同