android Handler类包含此方法:
public final boolean postAtTime (Runnable r, Object token, long uptimeMillis)
Run Code Online (Sandbox Code Playgroud)
在给定时间发布Runnable.在token以后可以用于去除回调r从消息队列由于这种方法:
public final void removeCallbacks (Runnable r, Object token)
Run Code Online (Sandbox Code Playgroud)
Handler类中不存在以下方法
public final boolean postDelayed (Runnable r, Object token, long delay)
Run Code Online (Sandbox Code Playgroud)
有没有提供这种方法的充分理由?
查看源代码后,令牌对象最终传递给Message:
public final boolean postAtTime(Runnable r, Object token, long uptimeMillis)
308 {
309 return sendMessageAtTime(getPostMessage(r, token), uptimeMillis);
310 }
private static Message getPostMessage(Runnable r, Object token) {
608 Message m = Message.obtain();
609 m.obj = token;
Run Code Online (Sandbox Code Playgroud)
和postDelay
public final boolean postDelayed(Runnable r, long delayMillis)
330 {
331 return sendMessageDelayed(getPostMessage(r), delayMillis);
332 }
Run Code Online (Sandbox Code Playgroud)
如果你想要的是
public final boolean postDelayed (Runnable r, Object token, long delay)
Run Code Online (Sandbox Code Playgroud)
那么为什么不用
public final boolean postAtTime (Runnable r, Object token, long uptimeMillis)
Run Code Online (Sandbox Code Playgroud)
因为它一样.
更新,忘了添加这个:
public final boolean sendMessageDelayed(Message msg, long delayMillis)
442 {
443 if (delayMillis < 0) {
444 delayMillis = 0;
445 }
446 return sendMessageAtTime(msg, SystemClock.uptimeMillis() + delayMillis);
447 }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6054 次 |
| 最近记录: |