admin管理员组

文章数量:1130349

图片缓存问题

在手机有限的内存中,图片占用的资源实在太大,如何有效的处理图片缓存,既不影响用户体验,又充足利用手机的内存,这是个很值得思考的问题。
1、图片分辨率越高,尺寸越大,所占的内存也就越大。这时候,就需要做适当的处理,对图片进行一定比例压缩,并设置最佳解码方式(   默认为ARGB_8888: 每个像素4字节. 共32位。 Alpha_8: 只保存透明度,共8位,1字节。   ARGB_4444: 共16位,2字节。  RGB_565:共16位,2字节。 如果不需要透明度,可把默认值ARGB_8888改为RGB_565,节约一半内存 )。
2、在需要展示很多图片的场景下,用软引用的方法可让系统偏向于回收闲置的对象。但这个方法不太稳定。
      另外一种方法,使用LruCache缓存, 当存储Image的大小大于LruCache的值,系统会自动释放内存,并且释放不太被常用到的图片对象。( LruCache是一种算法,会移除不常用到的图片 )
3、文件缓存。有效利用手机SD卡, 读取速度会慢于内存,但在内存吃紧时可大大降低内存压力。
4、在需要清理缓存的时候,及时去清理垃圾数据,避免产生oom问题

图片缓存问题

在手机有限的内存中,图片占用的资源实在太大,如何有效的处理图片缓存,既不影响用户体验,又充足利用手机的内存,这是个很值得思考的问题。
1、图片分辨率越高,尺寸越大,所占的内存也就越大。这时候,就需要做适当的处理,对图片进行一定比例压缩,并设置最佳解码方式(   默认为ARGB_8888: 每个像素4字节. 共32位。 Alpha_8: 只保存透明度,共8位,1字节。   ARGB_4444: 共16位,2字节。  RGB_565:共16位,2字节。 如果不需要透明度,可把默认值ARGB_8888改为RGB_565,节约一半内存 )。
2、在需要展示很多图片的场景下,用软引用的方法可让系统偏向于回收闲置的对象。但这个方法不太稳定。
      另外一种方法,使用LruCache缓存, 当存储Image的大小大于LruCache的值,系统会自动释放内存,并且释放不太被常用到的图片对象。( LruCache是一种算法,会移除不常用到的图片 )
3、文件缓存。有效利用手机SD卡, 读取速度会慢于内存,但在内存吃紧时可大大降低内存压力。
4、在需要清理缓存的时候,及时去清理垃圾数据,避免产生oom问题

本文标签: 图片缓存问题