android中Handler.removeCallbacksAndMessages(null)的作用

今天都到一段代码,在onDestroy()方法中,使用了下面的代码:

mHandler.removeCallbacksAndMessages(null);
 
一开始我完全看不懂,我为什么参数是null,如果是null还需要移除什么Callbacks和Messages。后来察看官方文档有以下说明:

地址:http://developer.android.com/reference/android/os/Handler.html#removeCallbacksAndMessages%28java.lang.Object%29

 
public final void removeCallbacksAndMessages(Object token)

Added in API level 1
Remove any pending posts of callbacks and sent messages whose obj istoken. If token is null, all callbacks and messages will be removed.
 

上面的意思是说,如果参数为null的话,会将所有的Callbacks和Messages全部清除掉。
 

这样做的好处是在Acticity退出的时候,可以避免内存泄露。

时间: 2024-09-29 21:14:40

android中Handler.removeCallbacksAndMessages(null)的作用的相关文章

Android handler.removeCallbacksAndMessages(null)的妙用

问题 在Android项目中,Handler通常被用作主线程和子线程之间的通信.在实际应用过程中,我们经常通过Hander发送Message或者Runnable到主线程,但却很少主动在UI(Activity/Fragment)销毁时,进行移除Message或者Runnable操作,造成的后果可能是内存泄露,空指针... 解决方案 参考网上的做法,这里建议在基础UI类(BaseActitivy/BaseFragment)的onDestory函数中,调用以下函数,自动移除Message或者Runna

详解Android中Handler的使用方法_Android

在Android开发中,我们经常会遇到这样一种情况:在UI界面上进行某项操作后要执行一段很耗时的代码,比如我们在界面上点击了一个"下载"按钮,那么我们需要执行网络请求,这是一个耗时操作,因为不知道什么时候才能完成.为了保证不影响UI线程,所以我们会创建一个新的线程去执行我们的耗时的代码.当我们的耗时操作完成时,我们需要更新UI界面以告知用户操作完成了.所以我们可能会写出如下的代码: package ispring.com.testhandler; import android.app.

Android中Handler消息传递机制_Android

Handler 是用来干什么的? 1)执行计划任务,可以在预定的时间执行某些任务,可以模拟定时器 2)线程间通信.在Android的应用启动时,会创建一个主线程,主线程会创建一个消息队列来处理各种消息.当你创建子线程时,你可以在你的子线程中拿到父线程中创建的Handler 对象,就可以通过该对象向父线程的消息队列发送消息了.由于Android要求在UI线程中更新界面,因此,可以通过该方法在其它线程中更新界面. 出于性能优化考虑,Android的UI操作并不是线程安全的,这意味着如果有多个线程并发

Android中Handler消息传递机制

Handler 是用来干什么的? 1)执行计划任务,可以在预定的时间执行某些任务,可以模拟定时器 2)线程间通信.在Android的应用启动时,会创建一个主线程,主线程会创建一个消息队列来处理各种消息.当你创建子线程时,你可以在你的子线程中拿到父线程中创建的Handler 对象,就可以通过该对象向父线程的消息队列发送消息了.由于Android要求在UI线程中更新界面,因此,可以通过该方法在其它线程中更新界面. 出于性能优化考虑,Android的UI操作并不是线程安全的,这意味着如果有多个线程并发

Android中handler使用浅析

1. Handler使用引出 现在作为客户,有这样一个需求,当打开Activity界面时,开始倒计时,倒计时结束后跳转新的界面(思维活跃的朋友可能立马想到如果打开后自动倒计时,就类似于各个APP的欢迎闪屏页面),如下图: 作为初学者,可能觉得直接开启一个包含倒序循环的子线程就ok了,具体实现如下: 1.1 Layout界面代码如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns

详解Android中Handler的内部实现原理_Android

本文主要是对Handler和消息循环的实现原理进行源码分析,如果不熟悉Handler可以参见博文<详解Android中Handler的使用方法>,里面对Android为何以引入Handler机制以及如何使用Handler做了讲解. 概括来说,Handler是Android中引入的一种让开发者参与处理线程中消息循环的机制.我们在使用Handler的时候与Message打交道最多,Message是Hanlder机制向开发人员暴露出来的相关类,可以通过Message类完成大部分操作Handler的功

Android中Handler机制问题

问题描述 Android中Handler机制问题 android中我们常通过handler来进行线程间的通信,里面通过Looper来进行消息管理.线程间的通信都可以自己来实现,Handler的优势在哪线程间通信 解决方案 Android中的Handler机制(一)android handler机制Android Handler机制 解决方案二: 最大优势是,Handler运行在主线程中(UI线程中),可以让子线程通过handler更新UI操作 解决方案三: handler主要优势就是线程通讯呀,

Android中Handler Runnable与Thread的区别详解

转自: http://www.codeceo.com/article/android-handler-runnable-thread.html Android中Handler可以异步控制Runnable,那么这样做于Android中的Thread有什么区别呢?本文将通过多个角度来讲解这个问题,读完此文,相信你会对Android中的Handler Runnable与Thread有一个非常全面的了解. 在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口:Th

android中handler和bundle有什么区别和联系

问题描述 android中handler和bundle有什么区别和联系 android中handler和bundle有什么区别和联系 都是用来传递消息吗都是信息的载体吗 解决方案 http://www.cnblogs.com/nuistlr/archive/2012/08/31/2665107.html handler提供了回调,接收返回,bundle打包发出信息.