android中handler可能会造成内存泄漏?

伪代码:

class Activity{

 

 Handler manHandler = new Handler(){

         handlerMessage(){ // 匿名内部类的一个方法
        // 在内部类中可访问外部类的方法,是因为内部类默认持有外部类的实例
        helloH();
        // 同下
        Activity.this.helloH();
      }

 } 

// 外部类的一个方法

 void helloH(){

 }

}

1.我们的在匿名内部类Handler中handlerMessage方法内可以访问外部类的方法:helloH()。是因为内部类默认持有外部类的实例。
2.因为Handler在sendMessage时可以delay延迟发送消息,这是通过message类中的target变量持有Handler的实例,在时间到达时取出消息再交给Handler处理。
3.当调用外部类的destroy方法时,因为MessageQueue持有message,message持有Handler,而Handler又持有外部类的实例。JVM就无法真正的回收掉外部类。导致内存泄漏。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值