Android学习笔记之SoftReference软引用,弱引用WeakReference
SoftReference可以用于bitmap缓存
WeakReference 可以用于handler
非静态内部类和匿名内部类容易造成内存泄漏
private Handler mRemoteHandler = new SafeHandler(this);private static final int INIT_UI = 1;/*** safe handler 静态内部类*/private static class SafeHandler extends Handler {private final WeakReference<MainActivity> mActivitys;public SafeHandler(MainActivity preview) {mActivitys = new WeakReference<MainActivity>(preview);}@Overridepublic void handleMessage(Message msg) {MainActivity activity = mActivitys.get();if (activity != null) {if (null != msg) {switch (msg.what) {case INIT_UI:activity.initView();activity.updateUI();break;default:break;}}}}}
import android.os.AsyncTask; import android.text.TextUtils;import com.roadrover.settings.network.NetSupplier; import com.roadrover.settings.network.NetworkBean; import com.roadrover.utils.Logcat;import java.lang.ref.WeakReference; import java.util.Arrays;/** 不是内部类*/ public class HotSpotSafeTask extends AsyncTask<Void, Void, String[]> {// 弱引用允许Activity被垃圾收集器清理private final WeakReference<HotSpotFragment> weakFragment;public HotSpotSafeTask(HotSpotFragment fragment) {this.weakFragment = new WeakReference<>(fragment);}@Overridepublic String[] doInBackground(Void... params) {// do async stuff here// 重新获取Fragment的强引用,并且判断是否存活HotSpotFragment fragment = weakFragment.get();if (fragment == null || fragment.isDetached()) {// Fragment死亡了,不再做任何的事情return null;}String[] config = fragment.getWifiApConfig();return config;}@Overridepublic void onPostExecute(String[] config) {// 重新获取Fragment的强引用,并且判断是否存活HotSpotFragment fragment = weakFragment.get();if (fragment == null || fragment.isDetached()) {// Fragment死亡了,不再做任何的事情return;}// The Fragment is still valid, do main-thread stuff hereif ((config != null) && (config.length == 3)) {if (null != fragment) {Logcat.d("getWifiApConfig " + Arrays.toString(config));fragment.setName(config[0]);if (!TextUtils.isEmpty(config[1])) {fragment.setPassword(config[1]);} }}} }
转载于:https://www.cnblogs.com/lipeineng/p/6904139.html
Android学习笔记之SoftReference软引用,弱引用WeakReference相关推荐
- Android学习笔记之SoftReference软引用...
PS:其实这一篇和上一篇很类似,都是为了解决内存不足(OOM)这种情况的发生... 学习内容: 1.对象的引用类.... 最近也是通过项目中知道了一些东西,涉及到了对象的引用类,对象的引用类分为多种, ...
- JVM学习笔记之-垃圾回收相关概念 System.gc()的理解 内存溢出与内存泄漏 STW 垃圾回收的并行与并发 安全点与安全区域 再谈引用:强引用 软引用 弱引用 虚引用 终结器引用
System.gc()的理解 在默认情况下,通过System.gc()或者Runtime. getRuntime ( ).gc ()的调用,会显式触发Full GC,同时对老年代和新生代进行回收,尝试 ...
- 【Android 内存优化】Java 引用类型 ( 强引用 | 软引用 | 弱引用 | 虚引用 )
文章目录 一. Java 引用类型 ( 强.软.弱.虚 ) 二. 软引用代码示例 三. 弱引用代码示例 强引用 ( 不回收 ) > 软引用 ( OOM 前回收 ) > 弱引用 ( GC 必 ...
- Android学习笔记:Android基础知识点(不断更新中)
1.Android学习笔记:OkHttp 2.Android学习笔记:更新UI的方法(UI线程和非UI线程) 3.Android学习笔记:Volley 4.Android学习笔记:Handler 5. ...
- Android学习笔记之AndroidManifest.xml文件解析(摘自皮狼的博客)
Android学习笔记之AndroidManifest.xml文件解析 一.关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文件.它 ...
- 强引用,软引用,弱引用,虚引用
强引用,软引用,弱引用,虚引用 强引用: 我们一般使用的就是强引用.垃圾回收器绝不会回收它. 当内存空间不足时Java虚拟机宁愿抛出OutOfMemoryError错误使程序异常终止,也不会回收具有强 ...
- java强引用弱引用_Java 的强引用、弱引用、软引用、虚引用
1.强引用(StrongReference) 强引用是使用最普遍的引用.如果一个对象具有强引用,那垃圾回收器绝不会回收它.如下: Object o=new Object(); // 强引用 当内存空间 ...
- 【Java 虚拟机原理】Java 引用类型 ( 强引用 | 软引用 | 弱引用 | 虚引用 | 静态变量 )
文章目录 一.静态变量 二. Java 引用类型 ( 强.软.弱.虚 ) 一.静态变量 GC Root 对象 : 线程栈 中的 栈帧 中的 局部变量表 中的 引用对象 ; 方法区 中的 静态引用对象 ...
- Pro Android学习笔记(二九):用户界面和控制(17):include和merge
xml控件代码重用:include 如果我们定义一个控件,需要在不同的layout中重复使用,或者在同一个layout中重复使用,可以采用include的方式.例如定义my_button.xml如下 ...
最新文章
- 5-flutter 布局和列表
- 利用content为伊特元素追加三个小点
- SQLSTATE[HY000] [2003] Can’t connect to MySQL serv
- Linux TCP 连接数修改
- 阿里云天池发布完整开源数据集!实测可下!
- autoresetevent java_[原创]AutoResetEvent, ManualResetEvent的Java模拟
- 社区 正式发布了跨平台的 CoreWCF 0.2.0
- CV《神经风格转换》
- 《深入react技术栈》学习笔记(一)初入React世界
- 在Qt界面中显示OpenCV图像
- HDU 1158 Employment Planning【DP】
- html canvas绘制网格,canvas(七)绘制网格和坐标轴
- zookeeper单机和集群搭建过程详细步骤
- java使用poi.xssf 写入内容到excel表格中 和 读取 表格里面的数据
- 最长递增子序列(LIS longest-increment-subsequence)最长连续递增子序列 最大连续子序列和
- [BZOJ 3888] [Usaco2015 Jan] Stampede 【线段树】
- pdf安装包_PDF多功能格式转换器安装教程附安装包
- PDMS Pipeline Tool 教程(六):选项设置
- 向量积(叉积)及其计算
- 网络电话是如何实现打到普通话机上的?
热门文章
- c语言是以文件为单位编译,c语言从头开始(三:编译器工作原理) (我们还可以自己编写头文件后缀是xx.h并把它当前代码文件所在目录我们要用就可以直接通过下面代码使用)...
- Python之web开发(error):python使用django框架搭建网站之文件配置
- 图像处理之让手心长出眼睛,其实嘴也可以
- 【赠书】快速入门自动机器学习!自动机器学习(AutoML):方法、系统与挑战 图书赠送!...
- 为什么有三AI从来不追热点,信息越多学的越慢
- 【GAN优化】详解SNGAN(频谱归一化GAN)
- 中国餐饮连锁行业前景预测及未来战略规划建议报告2022年版
- 戛古 Kakku Pagodas
- 配置windows驱动开发环境
- mysql数据库文件的真实的物理存储位置