Android中的Handler中removeCallbacks(Runnable r)的含义是什么?

时间:2012-07-10 13:14:37

标签: android android-handler

我想知道Handler中removeCallbacks(Runnable r)的确切含义是什么。我浏览了documentation,它只是说“删除邮件队列中任何待处理的Runnable r的帖子”。

现在我的问题是,我的处理程序是否已经开始处理我的消息,如果我打电话给removeCallbacks,它是否会停止处理我完成的一半消息?或者即使我调用removeCallbacks,我的处理程序已经开始处理的消息(当我调用post(Runnable r)时)将被执行?

2 个答案:

答案 0 :(得分:15)

创建新的Handler时,它将绑定到创建它的线程的线程/消息队列。从那时起,它将向该消息队列传递消息和可运行的消息,并在它们从消息队列中出来时执行它们。 removeCallbacks只是删除那些尚未从队列中开始处理的runnable。

答案 1 :(得分:9)

Runnables只应在它们从消息队列中出来时执行,因此如果您的消息已经开始处理,则不应该通过调用removeCallbacks来实现它。它应该已被删除,因此它将继续处理。