android handler清空,Android应用开发Android Handler 避免内存泄漏之清空队列

本文将带你了解Android应用开发Android Handler 避免内存泄漏之清空队列,希望本文对大家学Android有所帮助。

Android Handler   避免内存泄漏之清空队列,Android开发经常会用到handler,但是我们发现每次使用Handler都会出现:This Handler class   should be static or leaks might occur(null)这样的提示。Android   lint就是为了提示我们,这样使用Handler会容易造成内存泄漏。但是你会发现其实改成static并没有什么用。因为这并没有解决这个问题的根本。

首先,我们得确认,为什么会有内存泄漏?因为Handler是基于消息的。每次new   出Handler,都会创建一个消息队列用于处理你使用handler发送的消息,形如:handler.send***Message。由于消息的发送总是会有先来后到的区别(如果只是这样都还好,毕竟再慢也不会太久,总归可以跑完,可能会延迟个几秒),但是如果你使用的是sendMessageDelayed(Message   msg, long delayMillis)或postDelayed(Runnable r, long delayMillis)等发送延迟消息的时候,那基本内存泄漏发生的概率已经在90%以上了。

我举个通常的例子,就是我们在Activity中使用handler来更新UI控件,这是比较常见的。

1 public class DemoActivity extends Activity {

2

3       private Handler mHandler;

4

5       protected void onCreat

你可能感兴趣的:(android,handler清空)