前言

  • 在 Android开发中,性能优化策略十分重要
  • 本文主要讲解性能优化中的Bitmap 使用优化,希望你们会喜欢

目录


1. 优化原因

即 为什么要优化图片Bitmap资源,具体如下图: 


2. 优化方向

本文将从 以下方面优化图片Bitmap资源的使用 & 内存管理 


3. 具体优化方案

下面,我将详细讲解每个优化方向的具体优化方案

3.1 使用完毕后 释放图片资源

  • 优化原因 
    使用完毕后若不释放图片资源,容易造成内存泄露,从而导致内存溢出

  • 优化方案 
    a. 在 Android2.3.3(API 10)前,调用 Bitmap.recycle()方法 
    b. 在 Android2.3.3(API 10)后,采用软引用(SoftReference)

  • 具体描述 
    在 Android2.3.3(API 10)前、后,Bitmap对象 & 其像素数据 的存储位置不同,从而导致释放图片资源的方式不同,具体如下图

注:若调用了Bitmap.recycle()后,再绘制Bitmap,则会出现Canvas: trying to use a recycled bitmap错误

3.2 根据分辨率适配 & 缩放图片

  • 优化原因 
    若 Bitmap 与 当前设备的分辨率不匹配,则会拉伸Bitmap,而Bitmap分辨率增加后,所占用的内存也会相应增加

    因为Bitmap 的内存占用 根据 xy的大小来增加的

  • 优化方案

关于图片资源适配屏幕分辨率,具体请看文章:Android 屏幕适配:最全面的解决方案

3.3 按需 选择合适的解码方式

  • 优化原因 
    不同的图片解码方式 对应的 内存占用大小 相差很大,具体如下 

  • 优化方案 
    根据需求 选择合适的解码方式

    1. 使用参数:BitmapFactory.inPreferredConfig 设置
    2. 默认使用解码方式:ARGB_8888

3.4 设置 图片缓存

  • 优化原因 
    重复加载图片资源耗费太多资源(CPU、内存 & 流量)

  • 优化方案

关于三级缓存机制,此处不作过多描述,具体请看文章:三级缓存说明

至此,关于图片资源Bitmap的使用优化讲解完毕


4. 总结

  • 本文全面总结了图片资源Bitmap的使用优化,具体如下图

android 性能优化---(5)Bitmap图片资源优化相关推荐

  1. Android性能优化:那些关于Bitmap图片资源优化的小事

    前言 在 Android开发中,性能优化策略十分重要 本文主要讲解性能优化中的Bitmap 使用优化,希望你们会喜欢 Carson带你学Android性能优化系列文章: Android性能优化:性能优 ...

  2. Android系统性能优化(71)---关于Bitmap图片资源优化的小事

    Android性能优化:那些关于Bitmap图片资源优化的小事 前言 在 Android开发中,性能优化策略十分重要 本文主要讲解性能优化中的Bitmap 使用优化,希望你们会喜欢 目录 1. 优化原 ...

  3. Android性能优化 - 内存优化

    性能优化系列阅读 Android性能优化 性能优化 - 消除卡顿 性能优化- 内存优化 性能分析工具 - TraceView Android性能分析工具 为什么内存优化? 在一个商业项目中,很有可能因 ...

  4. Android 图片性能优化:Bitmap

    一.引入 图片作为内存消耗大户,一直是开发人员尝试优化的重点对象.Bitmap的内存从3.0以前的位于native,到后来改成jvm,再到8.0又改回到native.jvm每个进程都有内存上限,而na ...

  5. Android性能优化系列之Bitmap图片优化

    在Android开发过程中,Bitmap往往会给开发者带来一些困扰,因为对Bitmap操作不慎,就容易造成OOM(Java.lang.OutofMemoryError - 内存溢出),本篇博客,我们将 ...

  6. Android性能优化系列:Bitmap

    文章目录 Bitmap 简介 Bitmap 的创建 不同系统版本 Bitmap 的内存分配策略 Bitmap 内存占用计算 在电脑查看的图片大小和运行内存大小区别 图片占用内存计算 Bitmap 内存 ...

  7. Android性能优化之内存篇(三)

    原文链接:http://hukai.me/android-training-managing_your_app_memory/ http://hukai.me/android-performance- ...

  8. Android性能优化

    Android性能优化 一.布局优化: 1.优化方式: 减少不必要嵌套,尽可能使用LinearLayout.ConstraintLayout等控件 减少颜色覆盖,子控件背景足够,不要在其父控件加颜色 ...

  9. Android 性能优化——之图片的优化

    Android 性能优化--之图片的优化 在Android性能优化中,我们会发现占内存最大的和对性能影响最大的往往是图片资源,其次是控件资源.相对来说,其他的资源的影响会小一点.这里我就先对图片资源的 ...

最新文章

  1. python file does not exist_python – os.path.exists()的谎言
  2. 【Android】Handler详解
  3. 我的 .NET Core 博客性能优化经验补充
  4. axios vue 加载效果动画_vue中使用axios拦截器实现数据加载之前的loading动画显示 @劉䔳...
  5. 使用Seaborn和Pandas进行数据可视化
  6. C++之函数返回数组
  7. 日照百分率建模及模拟
  8. 【易实战】Spring Cloud Greenwich Ribbon:负载均衡的服务调用
  9. 2020字节跳动数据库面试题及答案
  10. 详细的LaTex语法
  11. 小米摄像头修改wifi
  12. 直击网易人工智能事业部:闷声发大财的新面孔
  13. Predictive and Prescriptive Methods in Operations Research and Machine Learning: An Optimization App
  14. 分享两篇适合程序员看的书籍——《谁动了我的奶酪》、《你的灯亮着吗?》读后感
  15. h5+js+ajax+百度翻译API:实现翻译功能
  16. QT之qss教程- QScrollBar
  17. Caffeine - Caches - Eviction
  18. Linux下Watchdog
  19. GPS导航仪价格到底还要降多少?
  20. 统计_偏态、峰值(Datawhale概率统计温习2)

热门文章

  1. 嵌入式Linux系统编程学习之五gcc/g++编译器
  2. 计算机ip地址无法修改密码,手提电脑怎么修改无线网络的IP地址|无线网络怎么修改密码...
  3. java 输出定位代码行_指定一个.java文件,输出其代码行数
  4. Cloudera Manager 5和CDH5(最新版5.1.3) 安装
  5. Linux服务器SSH免密登录
  6. centos 7.2安装 lnmp一键安装
  7. Linux学习之磁盘操作
  8. MFC改变对话框背景颜色
  9. Cesium获取经度 ,纬度,高度
  10. @RequiresPermissionss是否可以填写多种权限标识,只要满足其一就可以访问?