我想知道Handler中removeCallbacks(Runnable r)的确切含义是什么。我浏览了documentation,它只是说“删除邮件队列中任何待处理的Runnable r的帖子”。
现在我的问题是,我的处理程序是否已经开始处理我的消息,如果我打电话给removeCallbacks
,它是否会停止处理我完成的一半消息?或者即使我调用removeCallbacks
,我的处理程序已经开始处理的消息(当我调用post(Runnable r)
时)将被执行?
答案 0 :(得分:15)
创建新的Handler
时,它将绑定到创建它的线程的线程/消息队列。从那时起,它将向该消息队列传递消息和可运行的消息,并在它们从消息队列中出来时执行它们。 removeCallbacks
只是删除那些尚未从队列中开始处理的runnable。
答案 1 :(得分:9)
Runnables只应在它们从消息队列中出来时执行,因此如果您的消息已经开始处理,则不应该通过调用removeCallbacks
来实现它。它应该已被删除,因此它将继续处理。