[置顶] android图片的三级缓存原理demo,解决图片加载OOM的问题,能加载上万张图片
2017-04-06 15:39
441 查看
一直以来不管是listview还是recycleview加载过多图片都会出现OOM异常,对于这个问题在开发中和面试中都会被提到,,,.对与怎么解决这种问题,就要引入图片的三级缓存的问题了,图片的三级缓存原理很简单,主要分为三部分:
1.网络加载
2 .SD卡加载也就是本地加载图片
3. 内存加载.-----------过程如下图....
![](https://oscdn.geek-share.com/Uploads/Images/Content/201704/912630095d4ac71403c4fbb4f15ca3e4)
首先分析一下图片过程:
1.界面显示图片,此时的图片首先就要从内存中加载,如果内存中有图片的缓存就直接加载,如果没有就要到第二步,
2.从本地获取,这时如果本地没有就要到第三步,
3.从网络中加载图片........大概的过程就是这样...
注意:
对于图片的三级缓存非常重要的一点就是必须要用到 "软引用",对于软引用这里我就不多说了,不熟悉可以到百度去查.
为什么需要软引用的是因为我门的图片的bitmap全部保存在手机app内存中,如果内存不够用当前程序最先释放的内存就是软引用所占的内存空间,,,所以软引用不会让我们的应用程序包OOM异常.....
![](https://oscdn.geek-share.com/Uploads/Images/Content/201704/b0b5d5463eb33c1b64661b00a323dbe8)
代码就不贴了,代码太多最后我把源码demo发到这个网站: http://www.xiufm.com/thread-15415-1-1.html
可以直接去下载.
1.网络加载
2 .SD卡加载也就是本地加载图片
3. 内存加载.-----------过程如下图....
首先分析一下图片过程:
1.界面显示图片,此时的图片首先就要从内存中加载,如果内存中有图片的缓存就直接加载,如果没有就要到第二步,
2.从本地获取,这时如果本地没有就要到第三步,
3.从网络中加载图片........大概的过程就是这样...
注意:
对于图片的三级缓存非常重要的一点就是必须要用到 "软引用",对于软引用这里我就不多说了,不熟悉可以到百度去查.
为什么需要软引用的是因为我门的图片的bitmap全部保存在手机app内存中,如果内存不够用当前程序最先释放的内存就是软引用所占的内存空间,,,所以软引用不会让我们的应用程序包OOM异常.....
代码就不贴了,代码太多最后我把源码demo发到这个网站: http://www.xiufm.com/thread-15415-1-1.html
可以直接去下载.
相关文章推荐
- Android之批量加载图片OOM问题解决方案
- Android开发解决加载图片OOM问题(非常全面 兼顾4.0以下系统)(by 星空武哥)
- android解决加载大图片卡顿和oom问题。
- Android之批量加载图片OOM问题解决方案
- android 中解决gridview 等加载大图片出现oom的问题
- 关于android gridview 加载大量图片的OOM问题解决方案
- Android之批量加载图片OOM问题解决方案
- Android异步加载图片,解决图片过大OOM问题
- Android之批量加载图片OOM问题解决方案
- Android在加载图片时, BitmapFactory.decodeStream(is)代码报出OOM异常问题解决
- Android之批量加载图片OOM问题解决方案
- Android之批量加载图片OOM问题解决方案
- Android实现图片的加载与释放(解决OOM问题)
- Android之批量加载图片OOM问题解决方案
- 解决Android加载图片时内存溢出的问题
- Android加载大图片OOM异常解决
- Android有效解决加载大图片时内存溢出的问题
- Android有效解决加载大图片时内存溢出的问题
- Android 有效解决加载大图片时内存溢出的问题
- Android有效解决加载大图片时内存溢出的问题