17

我想知道 Handler 中 removeCallbacks(Runnable r) 的确切含义是什么。我浏览了它的文档,它只是说“删除消息队列中的 Runnable r 的所有待处理帖子”。

现在我的问题是,如果我的消息已经由我的处理程序开始处理,并且如果我调用removeCallbacks,它会停止处理我的半完成消息吗?或者即使我调用removeCallbacks已经由我的处理程序开始处理的消息(当我调用时post(Runnable r))也会被执行?

4

2 回答 2

17

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

于 2012-07-10T13:34:11.617 回答
10

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

于 2012-07-10T13:26:41.603 回答