美文网首页
Bitmap的加载和Cache

Bitmap的加载和Cache

作者: 伪代码 | 来源:发表于2017-04-15 10:15 被阅读0次

根据《android开发艺术探索》做的笔记

BitchmapFactory提供了几个加载方法:decodeFile、decodeResource、decodeStream、decodeByteArray分别从文件系统、资源、输入流、字节数组加载一个Bitmap对象,其中decodeFile、decodeResource都是间接的调用了decodeStream。

如何有效的加载Bitmap呢?就是采用BitmapFactory.Options来加载所需尺寸的图片。他可以对图片进行一定的采样缩小图片。

如何获得采样率呢?需要经过下列的四个步骤,首先将BitmapFactory.Options的inJustDecodeBounds参数设为true,然后再从BitmapFactory.Options取出原始宽高,然后根据采样率的规则并结合目标View的所需大小计算出采样率onSampleSize,最后将inJustDecodeBounds参数设为false。这儿为什么要把inJustDecodeBounds设来设去呢?因为那样的话,BitmapFactory并不会真正的去加载图片,智慧解析图片的原始宽高,所以这个操作是轻量级的。

先介绍一下java的四种引用:

强引用:最普遍的一种引用,如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题

软引用:如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来实现内存敏感的高速缓存。

软引用可以和一个引用队列(ReferenceQueue)联合使用,如果软引用所引用的对象被垃圾回收器回收,Java虚拟机就会把这个软引用加入到与之关联的引用队列中

弱引用:在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。不过,由于垃圾回收器是一个优先级很低的线程,因此不一定会很快发现那些只具有弱引用的对象。

弱引用可以和一个引用队列(ReferenceQueue)联合使用,如果弱引用所引用的对象被垃圾回收,Java虚拟机就会把这个弱引用加入到与之关联的引用队列中。

虚引用:顾名思义,就是形同虚设,与其他几种引用都不同,虚引用并不会决定对象的生命周期。如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收器回收

虚引用主要用来跟踪对象被垃圾回收器回收的活动。虚引用与软引用和弱引用的一个区别在于:虚引用必须和引用队列 (ReferenceQueue)联合使用。当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,就会在回收对象的内存之前,把这个虚引用加入到与之 关联的引用队列中。

LruCache的底层实现就是 LinkedHashMap。

DiskLruCache:1先通过DiskLruCache.open创建一个实例 2将url转化成key,因为url 中有一些字符不能辨认 3 通过edit方法获得一个Editor实例,然后通过Editor就可以获得outputStream 4 将从网上下载的资源通过outputStream写进流里面 5 然后通过editor.commit()写进文件里面。

相关文章

  • Bitmap的加载与缓存策略

    Bitmap的加载和Cache Bitmap的高效加载 使用BitmapFactory加载一张图片的方式 deco...

  • 笔记: Bitmap加载和Cache

    Bitmap加载和Cache BitmapOptions decodeFile decodeStream deco...

  • Bitmap的加载和Cache

    如何高效地加载Bitmap呢?其实核心思想就是采用BitmapFactory.Options来加载所需尺寸的图片。...

  • Bitmap 的加载和 Cache

    缓存策略是一个通用的思想,实际开发中经常需要用 Bitmap 做缓存。 12.1 Bitmap 的高效加载 Bit...

  • Bitmap的加载和Cache

    目前比较常用的缓存策略是LruCache(Android3.1提供)和DiskLruCache(是官方文档推荐,但...

  • Bitmap的加载和Cache

    参考资料 Android DiskLruCache完全解析,硬盘缓存的最佳方案 目录 Bitmap的高效加载 An...

  • Bitmap的加载和Cache

    Android开发艺术探索笔记 一:Bitmap的高校加载 Bitmap在Android中指的是一张图片,格式有多...

  • Bitmap的加载和Cache

    由于Bitmap的特殊性以及Android对单个应用所施加的内存限制,比如16M,这导致加载Bitmap的时候很容...

  • Bitmap的加载和Cache

    根据《android开发艺术探索》做的笔记 BitchmapFactory提供了几个加载方法:decodeFile...

  • Bitmap的加载和Cache

    参考资料《Android开发艺术探索》 如何高效的加载一个Bitmap?由于Bitmap的特殊性以及Android...

网友评论

      本文标题:Bitmap的加载和Cache

      本文链接:https://www.haomeiwen.com/subject/uadnattx.html