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

And*_*Dev 16 android android-handler

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

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

Ale*_*ood 16

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


Bil*_*ard 9

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