android handler 销毁,Android Handler内存泄漏原因及解决方案

本文探讨了Android中Handler如何导致内存泄漏,主要原因是非静态内部类持有Activity引用,即使Activity销毁,Handler仍可能有未执行完的消息,阻碍了回收。解决方法包括在Activity销毁时清空Handler的消息队列,以及使用静态内部类结合弱引用。了解这些能有效防止内存泄漏问题。
摘要由CSDN通过智能技术生成

目录:

28421fd627345056a5e9d5631738a44c.png

1.须知:

主线程Looper生命周期和Activity的生命周期一致。

非静态内部类,或者匿名内部类。默认持有外部类引用。

2.原因:

Handler造成内存泄露的原因。非静态内部类,或者匿名内部类。使得Handler默认持有外部类的引用。在Activity销毁时,由于Handler可能有未执行完/正在执行的Message。导致Handler持有Activity的引用。进而导致GC无法回收Activity。

3.可能造成内存泄漏

匿名内部类:

//匿名内部类

Handler handler=new Handler(){

@Override

public void handleMessage(Message msg) {

super.handleMessage(msg);

}

};

非静态内部类:

//非静态内部类

protected class AppHandler extends Handler {

@Override

public void handleMessage(Message msg) {

switch (msg.what) {

// TODO: 2019/4/30

}

}<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值