我是靠谱客的博主 追寻小松鼠,最近开发中收集的这篇文章主要介绍Android性能优化(七)Bitmap内存压缩一、Bitmap内存占用二、Bitmap内存压缩三、Bitmap内存优化 四、LruCache五、LinkedHashMap,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、Bitmap内存占用

内存大小计算

  ARGB_8888

  ARGB各占8位,即WIDTH*HEIGHT*4

 

 RGB_565

    R5位,G6位,B5位,即16位 WIDTH*HEIGH*2

 

getByteCount

  返回可用于存储此位图像素的最小字节数。

 

BitmapFactory.Options

  控制解码图片参数

 

inDensity:

  表示这个bitmap的像素密度,根据drawable目录

 

inTargetDensity:

  表示要被画出来时的目标(屏幕)像素密度 , getResources().getDisplayMetrics().densityDpi

 

二、Bitmap内存压缩

 

BitmapFactory.Options

 

inJustDecodeBounds  

  读取图片out…系列参数,如outWidth与outHeight,可用于计算内存大小

inPreferedConfig  

  设置图片解码后的像素格式,如ARGB_8888/RGB_565

inSampleSize  

  设置图片解码缩放比,如值为4,则加载图片宽高是原图的1/4,内存大小则是1/16

 

对于内存的降低,无论是选择jpg还是png更或者是webp。其实都是毫无意义的。Jpg是属于有损压缩,我们看见的jpg比png文件小,那是因为压缩率高。这都是属于文件存储范畴。对于内存来说,我们加载一张不带alpha通道使用RGB_565格式的png与一张jpg占用的内存大小都是一样的。

 

对于内存的压缩我们能做的就是缩小图片尺寸与改变像素格式。

 

三、Bitmap内存优化

https://developer.android.google.cn/topic/performance/graphics/manage-memory.html

https://developer.android.google.cn/samples/DisplayingBitmaps/index.html

inBitmap复用

 

四、LruCache

  android提供的一个缓存工具类,使用LRU缓存淘汰算法。

  根据数据的历史访问记录来进行淘汰数据, “如果数据最近被访问过,那么将来被访问的几率也更高”。

1. 新数据插入到链表头部;

2. 每当缓存命中(即缓存数据被访问),则将数据移到链表头部;

3. 当链表满的时候,将链表尾部的数据丢弃。

 

DiskLruCache

https://github.com/JakeWharton/DiskLruCache

 

五、LinkedHashMap

双向链表

最后

以上就是追寻小松鼠为你收集整理的Android性能优化(七)Bitmap内存压缩一、Bitmap内存占用二、Bitmap内存压缩三、Bitmap内存优化 四、LruCache五、LinkedHashMap的全部内容,希望文章能够帮你解决Android性能优化(七)Bitmap内存压缩一、Bitmap内存占用二、Bitmap内存压缩三、Bitmap内存优化 四、LruCache五、LinkedHashMap所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部