2 u014547383 u014547383 于 2015.07.20 10:05 提问

handler.removeMessage(int what)

在activity的onCreate里开启子线程加载数据,加载完了使用handler.sendMessage来通知主线程刷新,我在onDestroy里面用handler.removeMessage(int what)来移除了消息,为什么我退出activity后,当数据加载完还是执行了handler的handlerMessage?

2个回答

u010794180
u010794180   2015.07.20 10:08

从官方文档来说,onDestroy方法的执行并不意味这Activity的销毁。不要被方法名给误导了。

u010794180
u010794180 那我明白了。实际上removeMessage方法的调用,如果消息队列没有存在该id的消息,是没有做任何处理的。一起学习
接近 3 年之前 回复
u014547383
u014547383 回复yummylau: 虽然最终不知道原因,但还是谢啦,事实上我的onDestory方法里面执行removeMessage时,MeassageQueue还没接收到对应消息去消费,而是在我removeMessage之后的一个时间点,才接收到对应的消息,然后通过handlerMessage消费了,我就是奇怪为什么已经remove了,过了段时间却还能接收到这条消息
接近 3 年之前 回复
u010794180
u010794180 刚才我看了谷歌的文档,我个人的观点如下:第一,当你在oncreat里面执行后,你退出Activity未必执行onDestory,即使只习惯了onDestory其实Activity资源是没有被释放的。第二,那么你的MessageQueue事实上还是等着接收你发过来的消息。如果我没猜错你应该使用了内部类。第三,当你的MeassageQueue接收到消息后立刻就执行handlerMessage,那么你removeMessage去轮询队列消息应经被消费了。
接近 3 年之前 回复
u014547383
u014547383 重要的不是这个,是为什么在onDestroy里面用handler.removeMessage(int what)来移除了消息,后面handler还是处理了这条消息
接近 3 年之前 回复
CSDNXIAOD
CSDNXIAOD   2015.07.20 10:09

What is the ARGB int encoding of pixels in Java's AWT?
EventHub.removeMessages(int what = 107) is not supported before the WebViewCore is set up.
What does "size" in int(size) of MySQL mean?
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Android初学笔记之<handler.obtainMessage()方法理解>
在handler.obtainMessage()的参数是这样写的: Message android.os.Handler.obtainMessage(int what, int arg1, int arg2, Object obj) public final Message obtainMessage (int what, int arg1, int arg2, Object obj)
Handler 的sendEmptyMessage(int what)和sendMessage(Message msg)的区别?
Handler用sendEmptyMessage(int what)发消息,其实也可以用sendMessage(Message msg)的,但两者到底有啥区别? 直接上Handler源码: /** * Sends a Message containing only the what value. * * @return Returns true if the message was succ
Android关于Handler发送消息里面的arg1和arg2以及obj和what的用法
arg1 用于携带int整数型数据,到handler里面取值 int num = msg.arg1; arg2 用于携带int整数型数据 int num = msg.arg2; obj用于携带对象数据 例如:list = msg.obj ; handler里面取值方法;List list = (List)msg.obj; what 用于区分消息类别用法:msg.what = 1。msg.wh...
handler.obtainMessage()理解
在handler.obtainMessage()的参数是这样写的: Message android.os.Handler.obtainMessage(int what, int arg1, int arg2, Object obj) public final Message obtainMessage (int what, int arg1, int arg2, Object obj)
面试题:What will happen when you attempt to compile and run the following code
在论坛看到一个面试题,拿来和大家分享What will happen when you attempt to compile and run the following code class MyClass{ static String myName="Webs-TV"; MyClass getMyClass(){
Message的参数和方法
public int arg1 如果只需要存储几个整型数据,arg1 和 arg2是setData()的低成本替代品。   public int arg2 如果只需要存储几个整型数据,arg1 和 arg2是setData()的低成本替代品。   public Object obj 发送给接收器的任意对象。当使用Message对象在线程间传递消息时,如果它
HDU1308 What Day Is It?【日期】
What Day Is It? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 1380    Accepted Submission(s): 592 Problem Description The calendar no
玩转Android--组件篇---Handler的使用
原址:http://hualang.iteye.com/category/143855 public class  Handler extends Object   java.lang.Object  *android.os.Handler 直接子类: AsyncQueryHandler:一个帮助你处理异步ContentResolver查询的类
实习入职第二天:Handler.removeMessages的作用
1、这个方法使用的前提是之前调用过sendEmptyMessageDelayed(0, time),意思是延迟time执行handler中msg.what=0的方法; 2、在延迟时间未到的前提下,执行removeMessages(0),则上面的handler中msg.what=0的方法取消执行; 3、在延迟时间已到,handler中msg.what=0的方法已执行,再执行removeM
java面试笔试题大汇总 ~很全面(2)
面试要了解的问题 简单介绍一下您的情况? 您怎样描述自己? 您为何要选择我公司? 您为了这次面试做了哪些准备工作? 我们为什么要雇佣您? 为什么您要应聘这个职位? 您期望的薪金待遇是多少? 什么对您来说更加重要 — 工作还是金钱? 您期望从此职业中获得什么 — 金钱、声望还是事业成就感? 如果其他公司为您提供了更高的薪水,您会离开我公司吗? 您生活的最终目标是什么? 您怎样