gpt4 book ai didi

java - Handler.postAtTime 与 Handler.postDelayed

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:51:27 28 4
gpt4 key购买 nike

机器人Handler类包含此方法:

public final boolean postAtTime (Runnable r, Object token, long uptimeMillis)

在给定时间发布 Runnable。由于此方法,token 稍后可用于从消息队列中删除对 r 的回调:

public final void removeCallbacks (Runnable r, Object token)

Handler 类中不存在的方法

public final boolean postDelayed (Runnable r, Object token, long delay)

是否有充分的理由不提供这种方法?

最佳答案

看了源码,token对象最终传给了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;

和postDelay

 public final boolean postDelayed(Runnable r, long delayMillis)
330 {
331 return sendMessageDelayed(getPostMessage(r), delayMillis);
332 }

如果你想要的是

public final boolean postDelayed (Runnable r, Object token, long delay)

那为什么不直接使用

public final boolean postAtTime (Runnable r, Object token, long uptimeMillis)

因为它是一样的。

更新,忘了加上这个:

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 }

关于java - Handler.postAtTime 与 Handler.postDelayed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14690093/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com