android 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)
型
是否有充分的理由不提供这种方法?
4条答案
按热度按时间uurv41yg1#
查看源代码后,token对象最终传递给Message:
字符串
然后延迟
型
如果你想要的是
型
那为什么不直接用
型
因为它是相同的。
更新,忘记添加:
型
2jcobegt2#
查看处理程序源,似乎有:
字符串
你可以复制你想要的:不要调用
postDelayed
,而是将runnable Package 在这样的消息中型
然后,您可以使用
removeCallbacks()
和token作为参数vfh0ocws3#
这是一个老问题,但API28中增加了以token为参数的
postDelayed
方法版本:请参阅https://developer.android.com/reference/android/os/Handler#postDelayed(java.lang.Runnable,%20java.lang.Object,%20long)对于较旧的API版本,如果需要令牌来删除回调,仍然必须使用
postAtTime
。pbgvytdp4#
要从处理程序H中删除postDelayed可运行的r,只需调用H.removeCallbacks(r)。你为什么需要代币?