Handler.removeMessages的作用,有时候为什么一定要先remove一下呢

removeMessages会将handler对应message queue里的消息清空,如果带了int参数则是对应的消息清空。队列里面没有消息则handler会不工作,但不表示handler会停止。当队列中有新的消息进来以后handler还是会处理。

我的理解:

1、这个方法使用的前提是之前调用过sendEmptyMessageDelayed(0, time),意思是延迟time执行handler中msg.what=0的方法;

2、在延迟时间未到的前提下,执行removeMessages(0),则上面的handler中msg.what=0的方法取消执行;

3、在延迟时间已到,handler中msg.what=0的方法已执行,再执行removeMessages(0),不起作用。

时间: 2024-12-22 12:47:48

Handler.removeMessages的作用,有时候为什么一定要先remove一下呢的相关文章

Handler有何作用?如何使用?

一  Handler作用和概念 包含线程队列和消息队列,实现异步的消息处理机制,跟web开发的ajax有异曲同工之妙. 1.运行在某个线程上,共享线程的消息队列: 2.接收消息.调度消息,派发消息和处理消息: 3.实现消息的异步处理: Handler能够让你发送和处理消息,以及Runnable对象:每个Handler对象对应一个Thread和Thread的消息队列.当你创建一个Handler时,它就和Thread的消息队列绑定在一起,然后就可以传递消息和runnable对象到消息队列中,执行消息

java.lang.NullPointerException: Attempt to invoke virtual method 'void 、Handler.removeMessages(int)' on a null object reference

onDestory进行释放Handler时,需要判断null if(null != mHandler) { mHandler.removeMessages(MSG_CHANGE_TEXT_COLOR); mHandler.removeMessages(MSG_JUMP_TO_SUCCESS_PAGE); mHandler.removeMessages(MSG_PLAY_LITTLE_PEOPLE_ANIMATION); mHandler.removeMessages(MSG_PLAY_WRONG

阶段一:用Handler和Message实现计时效果及其中一些疑问

“阶段一”是指我第一次系统地学习Android开发.这主要是对我的学习过程作个记录. 本来是打算继续做天气预报的优化的,但因为某些原因,我要先把之前做的小应用优化一下.所以今天就插播一下用Handler和Message实现计时效果. 首先,简要说明一下,这个应用有两个显示数字的Text,一个是显示秒,另一个是显示毫秒,而每10毫秒发送一次Message,让显示毫秒的Text加1,每1000毫秒,也就一秒,就让显示秒的Text加1.此外,还有一个自己制作的圆形进度条,每过一秒会增加6度的弧.这个应

Handler Looper 原理 详解

演示代码 public class MainActivity extends ListActivity {     private TextView tv_info;     private CalThread calThread;//一个子线程     private boolean ifLooperPrepare = false;//是否在子线程中的创建Handler[前]初始化Looper     private boolean ifLooperLoop = false;//是否在子线程中

Android异步处理三:Handler+Looper+MessageQueue深入详解

Android Loop&Handle学习总结 - New Start - 博客频道 - CSDN.NET ?????? 昨晚偷懒,这篇博客只写了一个标题,今天早晨一看,还有15的阅读量.实在是对不起那些同学.......换了是我,也会BS这样的LZ吧!sorry 啦 -------------------------------------------------------------------------------------------------------------------

Android 中Message,MessageQueue,Looper,Handler详解+实例

一.几个关键概念 1.MessageQueue:是一种数据结构,见名知义,就是一个消息队列,存放消息的地方.每一个线程最多只可以拥有一个MessageQueue数据结构. 创建一个线程的时候,并不会自动创建其MessageQueue.通常使用一个Looper对象对该线程的MessageQueue进行管理.主线程创建时,会创建一 个默认的Looper对象,而Looper对象的创建,将自动创建一个Message Queue.其他非主线程,不会自动创建Looper,要需要的时候,通过调 用prepar

Handler和HandlerThread

1.什么是Handler? SDK中关于Handler的说明例如以下: A Handler allows you to sendand process Messageand Runnable objects associated with a thread's MessageQueue.Each Handler instance is associated with a single thread and that thread'smessage queue. When you create a

Handler,Looper,MessageQueue,Message总结

转载部分来自: http://gundumw100.iteye.com/blog/858233 转载部分对于应用层非常简洁明了 原创部分是基于Android4.4源代码,有什么错误或不足,欢迎指正 转载部分: 一.几个关键概念 1.MessageQueue:是一种 数据 结构,见名知义,就是一个消息队列,存放消息的地方.每一个线程最多只可以拥有一个MessageQueue数据结构. 创建一个线程的时候,并不会自动 创建其MessageQueue.通常使用一个Looper对象对该线程的Messag

Android消息机制Handler解析(源码+Demo)

Handler是开发人员在面试过程中最常见的问题之一了,这篇文章将较为全面地对Handler进行解读,包括源码层,以及使用方法. 如果看完文章有疑问,欢迎在评论中一起探讨 基本内容包括: 看完文章之后,可以用这个图片进行复习. 一.什么是Handler Handler是Android提供用来更新UI的一套机制,也是一套消息处理机制,可以用它来发送消息,也可以用它来接收消息. 二.为什么使用Handler Android在设计之时,就封装了一套消息的创建.传递.处理机制,若不遵循这样的处理机制,就