1. Android 中的4种引用
①
② Java的引用StrongReference、 SoftReference、 WeakReference 、PhantomReference
③ 硬引用 LruCache: Android DiskLruCache完全解析,硬盘缓存的最佳方案
DiskLruCache
原理-- 获取进程最大运行内存,给缓存设置一个最大占用内存值,超过这个内存则把最少使用的图片移除掉。
实现:
写入
① 文件保存路径
/sdcard/Android/data/<application package>/cache 或者是 /data/data/<application package>/cache
② 保存缓存文件的文件名 Url对应的MD5值
③ 得到 DiskLruCache 对象,通过
DiskLruCache.open(File directory, int appVersion, int valueCount, long maxSize)返回
④ 以文件名为参数得到Editor 对象 mDiskLruCache.edit(key);
⑤ 以 editor.newOutputStream(0) 得到输出流,以imageUrl、outputStream为参数 通过Http下载图片写入到缓存中。在子线程中进行
读取
① 通过 url 得到MD5值,通过mDiskLruCache.get(key) 得到 Snapshot 对象,通过snapShot.getInputStream(0);得到输入流,然后的事情就是 转换成 Bitmap 显示。
移除缓存: mDiskLruCache.remove(key);
2. 优化工具
① Android代码优化——使用Android lint工具
在Android Studio要运行Lint工具:“Analyze”菜单中选择“Inspect Code…”。
3. Android性能优化之布局优化篇
4. Android学习系列(36)--App调试内存泄露之Context篇(上)
5. Android App定位和规避内存泄露方法研究
如何定位和解决Andorid的内存溢出问题(大总结)
①
[Android] Android开发优化之——使用软引用和弱引用
② Java的引用StrongReference、 SoftReference、 WeakReference 、PhantomReference
③ 硬引用 LruCache: Android DiskLruCache完全解析,硬盘缓存的最佳方案
DiskLruCache
原理-- 获取进程最大运行内存,给缓存设置一个最大占用内存值,超过这个内存则把最少使用的图片移除掉。
实现:
写入
① 文件保存路径
/sdcard/Android/data/<application package>/cache 或者是 /data/data/<application package>/cache
② 保存缓存文件的文件名 Url对应的MD5值
③ 得到 DiskLruCache 对象,通过
DiskLruCache.open(File directory, int appVersion, int valueCount, long maxSize)返回
④ 以文件名为参数得到Editor 对象 mDiskLruCache.edit(key);
⑤ 以 editor.newOutputStream(0) 得到输出流,以imageUrl、outputStream为参数 通过Http下载图片写入到缓存中。在子线程中进行
读取
① 通过 url 得到MD5值,通过mDiskLruCache.get(key) 得到 Snapshot 对象,通过snapShot.getInputStream(0);得到输入流,然后的事情就是 转换成 Bitmap 显示。
移除缓存: mDiskLruCache.remove(key);
2. 优化工具
① Android代码优化——使用Android lint工具
在Android Studio要运行Lint工具:“Analyze”菜单中选择“Inspect Code…”。
3. Android性能优化之布局优化篇
4. Android学习系列(36)--App调试内存泄露之Context篇(上)
5. Android App定位和规避内存泄露方法研究
如何定位和解决Andorid的内存溢出问题(大总结)