
Android 内存优化
韩曙亮
中国人民大学硕士 , 专注于 移动开发 领域 , 博客专家 , 2023 年博客之星 TOP1 , 2021 年博客之星 TOP9 , 华为云 云享专家 , 阿里云社区 专家博主 , 51CTO 专家博主 ;
展开
-
【Android 内存优化】自定义组件长图组件 ( 长图滚动区域解码 | 手势识别 GestureDetector | 滑动计算类 Scroller | 代码示例 )
一、GestureDetector 创建与设置、二、GestureDetector 触摸事件传递、三、触摸滑动操作、四、惯性滑动操作、五、长图滑动组件代码示例、六、运行效果、七、源码及资源下载、原创 2020-07-05 10:01:00 · 969 阅读 · 0 评论 -
【Android 内存优化】自定义组件长图组件 ( 获取图像宽高 | 计算解码区域 | 设置图像解码属性 复用 像素格式 | 图像绘制 )
一、获取图像真实宽高、二、计算解码区域、三、设置解码参数 内存复用 像素格式、四、图像绘制、五、执行效果、六、源码及资源下载原创 2020-07-04 21:16:26 · 3385 阅读 · 0 评论 -
【Android 内存优化】自定义组件长图组件 ( 自定义组件构造方法 )
1、View(Context context) 构造函数、2、View(Context context, @Nullable AttributeSet attrs)、3、View(Context context, @Nullable AttributeSet attrs, int defStyleAttr) 构造函数、4、View(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) 构造函数原创 2020-07-04 18:15:39 · 595 阅读 · 0 评论 -
【Android 内存优化】Bitmap 长图加载 ( BitmapRegionDecoder 简介 | BitmapRegionDecoder 使用流程 | 区域解码加载示例 )
一、BitmapRegionDecoder 简介、二、图片信息、三、BitmapRegionDecoder 对象创建、四、解码图像、五、图像区域解码示例、原创 2020-07-03 21:06:50 · 2449 阅读 · 0 评论 -
【Android 内存优化】Bitmap 硬盘缓存 ( Google 官方 Bitmap 示例 | DiskLruCache 开源库 | 代码示例 )
一、Google 官方 Bitmap 相关示例参考、二、磁盘缓存类 DiskLruCache、三、磁盘缓存初始化、四、存储数据到磁盘缓存中、五、从磁盘缓存中读取数据、六、 Android 10 文件访问、七、代码示例、1、二级缓存代码示例、2、调用工具类代码示例、八、源码及资源下载、原创 2020-07-02 22:44:59 · 851 阅读 · 0 评论 -
【Android 内存优化】Bitmap 内存缓存 ( Bitmap 内存复用 | 弱引用 | 引用队列 | 针对不同 Android 版本开发不同的 Bitmap 复用策略 | 工具类代码 )
一、Bitmap 复用池、二、弱引用 Bitmap 内存释放、三、从 Bitmap 复用池中获取对应可以被复用的 Bitmap 对象、1、Android 2.3.3(API 级别 10)及以下的版本、2、Android 4.4(API 级别 19)以下的版本、2、在 Android 4.4(API 级别 19)及以上的版本、四、LruCache 内存缓存、内存复用工具类、1、工具类、2、工具类测试、3、执行结果、五、源码及资源下载原创 2020-07-02 15:59:52 · 3078 阅读 · 0 评论 -
【Android 内存优化】Bitmap 内存缓存 ( Bitmap 缓存策略 | LruCache 内存缓存 | LruCache 常用操作 | 工具类代码 )
一、Bitmap 内存缓存策略、二、LruCache 内存缓存、三、LruCache 常用操作、四、LruCache 工具类、原创 2020-07-02 12:31:24 · 1187 阅读 · 0 评论 -
【错误记录】Android 内存泄漏 错误排查记录 ( FinalizerReference 内存泄漏 )
一、 报错信息、 二、 内存排查、 三、 代码分析及修改、 四、 不同版本说明原创 2020-07-01 19:24:57 · 1365 阅读 · 0 评论 -
【Android 内存优化】Bitmap 图像尺寸缩小 ( 考虑像素密度、针对从不同像素密度资源中解码对应的 Bitmap 对象 | inDensity | inTargetDensity )
一、像素密度对解码图片的影响、二、不考虑像素密度会导致图片缩小尺寸不准确、三、DisplayMetrics 源码阅读、研究手机资源获取规则、四、像素密度参数设置取值 ( inDensity | inTargetDensity | setDensity )、五、inDensity 与 inTargetDensity 设置、六、新的图片缩小工具类代码 ( 在原基础上添加了像素密度控制 )原创 2020-07-01 11:23:23 · 1435 阅读 · 1 评论 -
【Android 内存优化】Bitmap 图像尺寸缩小 ( 设置 Options 参数 | inJustDecodeBounds | inSampleSize | 工具类实现 )
一、解码图片参数 inJustDecodeBounds、二、计算图片的缩小比例、三、设置图片缩小配置 inSampleSize、四、设置图片像素格式 inPreferredConfig、五、设置图片复用机制、六、Bitmap 图像尺寸缩小代码示例、1、图片缩小工具类、2、Activity 调用工具类代码、3、执行结果原创 2020-06-30 22:46:34 · 3613 阅读 · 0 评论 -
【Android 内存优化】Bitmap 内存占用计算 ( Bitmap 图片内存占用分析 | Bitmap 内存占用计算 | Bitmap 不同像素密度间的转换 )
一、Bitmap 内存占用、二、Bitmap 内存占用计算示例、三、Bitmap 内存占用与像素密度、四、Bitmap 内存占用与像素密度示例、原创 2020-06-29 21:46:06 · 1894 阅读 · 0 评论 -
【Android 内存优化】Android 工程中使用 libjpeg-turbo 压缩图片 ( 初始化压缩对象 | 打开文件 | 设置压缩参数 | 写入压缩图像数据 | 完成压缩 | 释放资源 )
一、使用 libjpeg-turbo 压缩图片流程、二、初始化 JPEG 压缩对象、三、打开文件、四、设置压缩参数、五、开始压缩、六、循环写入压缩数据、七、完成图片压缩及收尾、八、libjpeg-turbo 图片压缩案例 ( 官方示例 )、九、libjpeg-turbo 压缩图片代码示例、原创 2020-06-29 15:06:09 · 1149 阅读 · 0 评论 -
【Android 内存优化】Android 工程中使用 libjpeg-turbo 压缩图片 ( JNI 传递 Bitmap | 获取位图信息 | 获取图像数据 | 图像数据过滤 | 释放资源 )
一、Bitmap 图像数据处理、二、Java 层 Bitmap 对象转为 JNI 层 bitmap 对象、三、获取 bitmap 中的图像数据、四、过滤 bitmap 中的图像数据 ( 获取 RGB 数据 剔除 A 通道数据 )、五、释放资源、六、Bitmap 图像数据处理原创 2020-06-29 12:45:50 · 1455 阅读 · 1 评论 -
【Android 内存优化】libjpeg-turbo 函数库交叉编译与使用 ( 交叉编译脚本编写 | 函数库头文件拷贝 | 构建脚本配置 | Android Studio 测试函数库 )
一、交叉编译 Shell 脚本参考、二、NDK r16b 版本配置、三、libjpeg-turbo 交叉编译 Shell 脚本、四、执行 libjpeg-turbo 交叉编译 Shell 脚本 开始编译、五、拷贝函数库头文件到 Android Studio、六、Android Studio 工程配置 CMakeLists.txt 构建脚本、七、Android Studio 工程配置 build.gradle 构建脚本、八、测试 libjpeg-turbo 函数库原创 2020-06-28 22:15:53 · 1789 阅读 · 3 评论 -
【Android 内存优化】libjpeg-turbo 函数库交叉编译 ( libjpeg-turbo 函数库下载 | libjpeg-turbo 编译文档 | 环境准备 | NASM 安装 )
一、 libjpeg-turbo 函数库下载与解压、 二、 libjpeg-turbo 编译文档、 三、 编译前环境准备、 四、 安装 NASM 汇编工具、 1、 下载 NASM 汇编工具、 2、 拷贝解压 NASM 源码、 3、 编译安装 nasm-2.15、 五、 编译 Android 平台使用的 libjpeg-turbo 函数库参考 ( 官方提供 | 仅供参考 )、原创 2020-06-28 19:02:41 · 1572 阅读 · 0 评论 -
【Android 内存优化】Android 原生 API 图片压缩原理 ( 哈夫曼编码开关 | 哈夫曼编码原理 | libjpeg-turbo 函数库 )
一、 哈夫曼编码开关、 二、 哈夫曼编码原理、 三、 libjpeg-turbo 函数库、 四、 libjpeg-turbo 函数库下载原创 2020-06-28 11:37:11 · 939 阅读 · 0 评论 -
【Android 内存优化】Android 原生 API 图片压缩原理 ( Bitmap_compress 方法解析 | Skia 二维图形库 | libjpeg 函数库 | libpng 函数库 )
一、 图片质量压缩方法、二、 Skia 二维图形库、三、 libjpeg、libpng 函数库引入原创 2020-06-27 22:45:13 · 1119 阅读 · 0 评论 -
【Android 内存优化】Android 原生 API 图片压缩原理 ( 图片质量压缩方法 | 查找 Java 源码中的 native 方法对应的 C++ 源码 )
一、 图片质量压缩方法、 二、 查找对应的 Native 方法源码、 三、 分析 Bitmap.cpp 中动态注册 Native 方法原创 2020-06-27 17:40:34 · 1602 阅读 · 0 评论 -
【Android 内存优化】Android 原生 API 图片压缩代码示例 ( PNG 格式压缩 | JPEG 格式压缩 | WEBP 格式压缩 | 动态权限申请 | Android10 存储策略 )
一、 图片质量压缩、 二、 图片尺寸压缩、 三、 Android 10 文件访问、 四、 完整源码示例原创 2020-06-27 14:15:48 · 1026 阅读 · 0 评论 -
【Android 内存优化】图片文件压缩 ( Android 原生 API 提供的图片压缩功能能 | 图片质量压缩 | 图片尺寸压缩 )
一、 图片压缩、二、 图片文件压缩类型、三、 Android 原生 API 提供的质量压缩、四、 Android 原生 API 提供的尺寸压缩原创 2020-06-27 13:33:26 · 1282 阅读 · 0 评论 -
【Android 内存优化】内存抖动 ( 垃圾回收算法总结 | 分代收集算法补充 | 内存抖动排查 | 内存抖动操作 | 集合选择 )
一、 垃圾回收算法总结、 二、 分代收集算法补充、 三、 查看 Java 虚拟机、 四、 获取 Android 应用可使用最大内存、 五、 内存抖动标志、 六、 排查内存抖动、 七、 常见的造成内存抖动操作、 八、 从内存优化角度选择集合原创 2020-06-27 08:46:49 · 956 阅读 · 0 评论 -
【Android 内存优化】垃圾回收算法 ( 分代收集算法 | Serial 收集器 | ParNew 收集器 | Parallel Scavenge 收集器 | CMS 并发标记清除收集器 )
一、 分代收集算法 ( 当前主流 )、 二、 垃圾回收器 / 收集器 ( GC )、 三、 串行收集器 ( Serial )、 四、 ParNew 收集器、 五、 Parallel Scavenge 收集器、 六、 CMS ( Concurrent Mark Sweep ) 并发标记清除收集器 ( 重点 )原创 2020-06-26 19:44:20 · 1754 阅读 · 0 评论 -
【Android 内存优化】垃圾回收算法 ( 内存优化总结 | 常见的内存泄漏场景 | GC 算法 | 标记清除算法 | 复制算法 | 标记压缩算法 )
一、 内存优化总结、 二、 常见的内存泄漏场景、 三、 内存回收算法、 四、 标记-清除算法 ( mark-sweep )、 五、 复制算法、 六、 标记-压缩算法原创 2020-06-26 09:49:33 · 996 阅读 · 0 评论 -
【Android 内存优化】使用 Memory Analyzer ( MAT ) 工具分析内存 ( MAT 工具使用 | 最大对象 | 类实例个数 | 引用与被引用 | GC Roots 最短链 )
一、 内存中最大的对象、 二、 查看每个类的对象实例的个数、 三、 查看对象的引用与被引用、 四、 查看对象到 GC Roots 的最短距离、 1、 选择 Merge Shortest Paths to GC Roots、 2、 GC Roots 与 GC 垃圾回收、 3、 Merge Shortest Paths to GC Roots 各个选项简介、 4、 查看对象强引用引用链原创 2020-06-25 20:11:47 · 2353 阅读 · 0 评论 -
【Android 内存优化】使用 Memory Analyzer ( MAT ) 工具分析内存 ( hprof 文件转换 | MAT 工具下载 | MAT 工具使用 )
一、 hprof 文件转换、 二、 下载 Memory Analyzer ( MAT ) 工具、 三、 Memory Analyzer ( MAT ) 工具打开内存快照、原创 2020-06-25 17:12:39 · 6049 阅读 · 1 评论 -
【Android 内存优化】Android Profiler 工具常用功能 ( 监测内存 | 内存快照 )
一、 内存泄漏排查 ( Android Profiler 工具 )、 二、 Android Profiler 内存监测相关功能、 三、内存快照分析、原创 2020-06-25 15:13:27 · 3639 阅读 · 0 评论 -
【Android 内存优化】Java 引用类型 ( 强引用 | 软引用 | 弱引用 | 虚引用 )
一、 Java 引用类型 ( 强、软、弱、虚 )、 二、 软引用代码示例、 三、 弱引用代码示例、原创 2020-06-25 12:27:30 · 586 阅读 · 0 评论 -
【Android 内存优化】Java 内存模型 ( Java 虚拟机内存模型 | 线程私有区 | 共享数据区 | 内存回收算法 | 引用计数 | 可达性分析 )
一、 Java 虚拟机内存模型、 二、 程序计数器 ( 线程私有区 )、 三、 虚拟机栈 ( 线程私有区 )、 四、 本地方法栈 ( 线程私有区 )、 五、 方法区 ( 共享数据区 )、 1. 方法区、 2. 运行时常量池、 六、 堆区 ( 共享数据区 )、 七、 内存溢出类型、 八、 引用计数算法回收内存、 九、 可达性分析算法回收内存原创 2020-06-25 09:33:43 · 798 阅读 · 0 评论