设为首页 加入收藏

TOP

Android 使用 SoftReference 解决 Activity 存栈的内存泄漏问题
2017-10-18 09:07:23 】 浏览:5508
Tags:Android 使用 SoftReference 解决 Activity 内存 泄漏 问题

Google 上搜索了一下,方法有很多,但是基本都是只退出了当前的 Activity, 并没有完全 finish 所有的 Activity。


利用存 Activity 栈的方式来 finish 所有这个方法目前来看是对我直接有效的,但是实际运行过程中, leakcanary 会报内存泄漏的异常,原因是我的 List 会对每一个 Activity 启动时进行添加,而当我 finish 某个 activity 时,List 里对应的 Activity 无法被 GC,这样导致我的内存开销增加了。如果我对每一次 Activity 的 finish 之后再清除对应的 List 里的 Activity, 这样我觉得会很麻烦,一点都不优雅。下面介绍一下 SoftReference 对象。


softreference 可以在 Activity 完成生命周期并且没有其他被引用的情况下被 GC 释放。所以 List 存 SoftReference 可以解决问题。


在 BaseActivity 的 onCreate() 方法对继承的 Activity 添加软引用到 MyApp 的 List 里。


 


当需要退出 App 时,只需调用 MyApp 的 exit() 方法即可。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Python通过future处理并发 下一篇Python 文件读取的不同方法比对

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目