【Android】Handler为什么会造成内存泄漏

news/2024/7/7 5:36:53 标签: android, java, handler, 内存泄漏

首先,要明确一个知识点

java中,匿名内部类会持有外部类引用

比如我们在Activity中通过以下方式创建Handler

java">
	Handler handler = new Handler() {
	    @Override
	    public void handleMessage(@NonNull Message msg) {
	        super.handleMessage(msg);
	    }
	};

那么,Handler将持有Activity

最终的对象引用链为:

ThreadLocal -> Looper -> MessageQueue -> Message -> Handler -> Activity

而ThreadLocal是一个static final变量,它是GC Root节点,永远不会被释放

所以被其间接引用的Activity,也不会被释放

解决方案是:

  • 将Handler定义为一个static类,而不是匿名内部类
  • 在Activity销毁前,调用Handler.remove方法,移除所有尚未处理的消息

http://www.niftyadmin.cn/n/5034938.html

相关文章

Linux简介和比较:开源操作系统的优势与差异

文章目录 第1章:Linux 简介和基础知识Linux 是什么以及它的历史Linux 发行版介绍Linux 基本命令行操作Linux和 Dos 操作系统的比较1. 发展历史和用途2. 内核和源代码3. 用户界面和用户体验4. 功能和应用程序5. 硬件兼容性6. 支持和社区 Linux 和 Windows 操作系统的…

【LeetCode热题100】--15.三数之和

15.三数之和 注意:最后答案中不能包含重复的三元组 使用排序双指针 可以使用三重循环枚举三元组,但是需要哈希表进行去重操作,得到不包含重复三元组的最终答案,消耗量大量的时间和空间 对于不重复的本质,保持三重循环…

Debian 使用 systemd 自动挂载 Samba

本文地址:blog.lucien.ink/archives/540 写成了一键脚本,直接执行即可。 需要注意的是,挂载的路径和 systemd service 的名字要对应上,比如挂载的路径为 /mnt/nas 那 service 的文件名应为 mnt-nas.service。 #!/usr/bin/env ba…

Spring Boot2.7生成用于登录的图片验证码

先在 pom.xml 注入依赖 <dependency><groupId>com.github.penggle</groupId><artifactId>kaptcha</artifactId><version>2.3.2</version> </dependency>然后 需要在配置文件中声明一下DefaultKaptcha 的 bean对象 然后 我们…

比较DITA/ATA2200/S1000D的有效性模型

结构化文档和通用的文档方法&#xff08;比如&#xff1a;MS Word、Markdown&#xff09;的一个重要区别是结构化方法可以出版个性化文档。 这里所说的个性化文档指的是文档中只包含与某种产品、或者某个用户角色相关的内容&#xff0c;和它不相关的内容在发布过程中被过滤掉。…

CSDN每日一练 |『勾股数』『任务分配问题』『单词逆序』2023-09-19

CSDN每日一练 |『勾股数』『任务分配问题』『单词逆序』2023-09-19 一、题目名称:勾股数二、题目名称:任务分配问题三、题目名称:单词逆序一、题目名称:勾股数 时间限制:1000ms内存限制:256M 题目描述: 勾股数是一组三个正整数,它们可以作为直角三角形的三条边。 比如3…

【QT--使用百度地图API显示地图并绘制路线】

QT--使用百度地图API显示地图并绘制路线 前言准备工作申请百度地图密钥(AK)安装开发环境 开发过程新建项目ui界面GPSManager类主窗口Map 效果展示 前言 先吐槽一下下&#xff0c;本身qt学的就不咋滴&#xff0c;谁想到第一件事就是让写一个上位机工具&#xff0c;根据CAN总线传…

基于DSPACE功率平衡理论的并联有源电力滤波器模型(Simulink)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…