Android 内存优化(四) —— 未取消注册或回调导致内存泄露

2023-11-11

未取消注册或回调导致内存泄露

比如我们在 Activity 中注册广播,如果在 Activity 销毁后不取消注册,那么这个刚播会一直存在
系统中,同上面所说的非静态内部类一样持有 Activity 引用,导致内存泄露。因此注册广播后在
Activity 销毁后一定要取消注册。

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        this.registerReceiver(mReceiver, new IntentFilter());
    }

    private BroadcastReceiver mReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            // 接收到广播需要做的逻辑
        }
    };

    @Override
    protected void onDestroy() {
        super.onDestroy();
        this.unregisterReceiver(mReceiver);
    }
}

在注册观察则模式的时候,如果不及时取消也会造成内存泄露。比如使用 Retrofit+RxJava 注册网
络请求的观察者回调,同样作为匿名内部类持有外部引用,所以需要记得在不用或者销毁的时候
取消注册。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 内存优化(四) —— 未取消注册或回调导致内存泄露 的相关文章

随机推荐

  • Android Studio怎么打包成APK

    1 确定软件版本 将项目切换到Project 打开app目录下的build gradle文件 versionCode是app的大版本好 为数值类型 默认为1 改成2 versionName是app的具体版本号 为际符串类型 默认为1 0 改
  • Qt--子线程访问主线程

    一 子线程访问主线程数据和方法 原文 Qt C 子线程访问主线程数据和方法 lccsuse 博客园 报错widgets must be creat in the GUI thread 子线程是不能访问GUI对象 主要 Widget cpp
  • 11.最小栈

    题目 思路 维护两个栈 一个栈正常push元素 另一个栈维护每个元素为栈顶元素时的最小栈元素值 stack1 push x val x lt minStack top x minStack top 题解 class MinStack sta
  • MySQL 中的时间戳和日期时间转换函数

    在平时开发中 经常会遇到一些时间范围的查询 比如查询近 7 天内注册的新用户 如果表中存储的是 timestamp 类型 那么开发时 查询数据可能看到的是一个整形的时间戳 不便于阅读 怎么能让查询的结果集中的时间显示正常可读的时间格式呢 答
  • 迭代器c++实现

    迭代器 Iterator 模式的定义 提供一个对象来顺序访问聚合对象中的一系列数据 而不暴露聚合对象的内部表示 class Iterator public Iterator Iterator virtual std string First
  • centos卸载MySQL8,吐血整理

    一 内存与线程 1 内存结构 内存是计算机的重要部件之一 它是外存与CPU进行沟通的桥梁 计算机中所有程序的运行都在内存中进行 内存性能的强弱影响计算机整体发挥的水平 JVM的内存结构规定Java程序在执行时内存的申请 划分 使用 回收的管
  • Java中wait和sleep方法的区别

    两者的区别 这两个方法来自不同的类分别是Thread和Object 最主要是sleep方法没有释放锁 而wait方法释放了锁 使得其他线程可以使用同步控制块或者方法 锁代码块和方法锁 wait notify和notifyAll只能在同步控制
  • 探索Java8——用Optional取代null

    文章目录 为缺失值建模 采用防御式检查减少 NullPointerException Optional类入门 应用 Optional 的几种模式 为缺失值建模 假设你需要处理下面这样的嵌套对象 这是一个拥有汽车及汽车保险的客户 public
  • pyqt和ros结合使用接受相机和点云消息并展示(附代码)

    代码是 ROS 节点的 Python QT脚本 用于订阅 turtle1 cmd vel tracking image 和 test pointcloud 话题 脚本首先通过 ps 命令检查是否已启动 ROS 主节点 如果没有则启动一个新的
  • Kafka事务提交位点失败

    记一次kafka事务提交失败 线上业务报错 2019 10 29 20 27 48 621 l fin ycb sync server1 toc pre ali dm org springframework kafka KafkaListe
  • geopandas安装方法

    依次按顺序安装 在这下载依赖包 https www lfd uci edu gohlke pythonlibs 然后逐个安装 1 安装gdal pip install C Users lenovo Downloads GDAL 3 4 3
  • ajax调用echarts,ajax和echarts第一次相遇

    ajax和echarts渲染基础 对于动态数据的展示 数据库内容的实时展示 如何能快速高校的在前端图表中展示呢 今天 小柯君带你简单体会一下ajax的神奇可妙之处 要加油啊 各位君 一 echarts简单案例 1 先导入你下载好的echar
  • 报错类型提示:HEAP CORRUPTION DETECTED:after Nomal block

    上次做实验遇到了这个报错 足足调了好久 最后上网查了才知道为什么 注释处的代码就原本发生错误的代码 原因是你使用了你没有调用的空间 然后你用delete回收的时候回收了你未调用的空间 所以报错
  • 小规模票表比对不通过_增值税小规模纳税人申报比对异常怎么办?这里有最新处理流程...

    小规模纳税人的申报比对异常如何提示 应该到哪个科 所 进行处理 该科 所 在哪里 赶紧往下看吧 猴嗨森 发送报表后 提示 一窗式比对不通过 怎么办 根据异常事项提供相关证明材料到主管税务机关办理 牛给力 猴嗨森 需要预约号处理小规模纳税人申
  • Servlet 执行原理和API 详情

    目录 1 Serlvet 运行原理 1 1 Tomcat 执行流程 a Tomcat 初始化流程 b Tomcat处理请求流程 c Servlet 中 service 法的实现 2 Servlet API详解 2 1 HttpServlet
  • 猿蜕变系列5——一文搞懂Controller的花式编写

    看过之前的执行流程 相信你对springMVC有了一定的认识 今天我们继续来学习springMVC相关的核心知识 帮助你快速起飞 完成蜕变 猿蜕变同样是一个原创系列文章 帮助你从一个普通的小白 开始掌握一些行业内通用的框架技术知识以及锻炼你
  • 最新win10+2080Ti下安装TensorFlow-GPU(带各个版本的cuda cudnn)

    最新实测好用 环境 Windows10 2080Ti 显卡 安装网上说的教程进行安装 需要的配置环境 cuda10 cudnn 7 3 1 版本这里谨记一点 不要进去下最新的版本 到目前发布为止 官网的cuda版本为10 1 地址 http
  • node包管理器nvm的安装与使用,以及安装遇到的问题和解决方案

    前言 随着vue3 0的普及 公司的新项目也都开始使用vue3 0 typescript vite的模式了 但是有的老项目还在有vue2 0 所以在开发不同项目的时候就会遇到因为node版本不同带来的各种不兼容 这个时候就需要用到nvm管理
  • 数据库——自然连接、内连接、外连接(左外连接、右外连接、全外连接)、交叉连接

    1 自然连接 natural join 自然连接不用指定连接列 也不能使用ON语句 它默认比较两张表里相同的列 SELECT FROM student NATURAL JOIN score 显示结果如下 2 内连接 inner join 和
  • Android 内存优化(四) —— 未取消注册或回调导致内存泄露

    未取消注册或回调导致内存泄露 比如我们在 Activity 中注册广播 如果在 Activity 销毁后不取消注册 那么这个刚播会一直存在 系统中 同上面所说的非静态内部类一样持有 Activity 引用 导致内存泄露 因此注册广播后在 A