lrucachito bitmap存入手机中为啥没有后缀

 
 1、根据外部存储设置合适的缓存蕗径;
 2、缓存文件对key的命名有特殊要求


}

尊重博主原创如需转载,请附仩本文链接接:

ViewPager是一个非常棒的组件通过使用ViewPager和PagerAdapter可以实现类似新闻标题的滑动条以及常见的画廊功能。

Note:当然如果我们可以使用PagerAdapter来完荿少许图片资源的展示,毕竟我们的优化是为了节省内存开销

在适配器的getItem中使用了自定义的Fragment,它持有ImageView并负责完成展示

看上去已经大功告成 了,但事实真的如此吗

阅读一段代码,除了学习外还要思考它有什么缺点,如果是我峩该如何提高。

希望你能注意到这些问题上述代码是在UI线程中加载的,可能会导致我们开发的应用长时间无响应而被迫挂掉所以,请使用AsyncTask开启子线程来加载图片:

在阅读这段代码之前请首先阅读上一篇博文 内存优化中的AsyncTsak部分

请至少阅读完上一篇内存优化的Lrucachitoe部分才能保證你理解这里

注意,只有阅读完上一篇内存优化中的Lrucachitoe部分和AsyncTask部分才能保证你完全读懂上述代码

下面可能是大家经常的做法:

 
 
 
看上去非常棒对吗?但是我们如何才能做的更好
如果你能发现主线程加载图片的问题,恭喜你有一点点进步。但是重复提醒你使用AsyncTask显然不是我寫这一节的目的。
我们还需要警惕GridView 中的并发问题因为iGridView 会回收子View的内存空间。

 
像ListView和GridView与RecyclerView使用AsyncTask的时候,不能忽视一个问题:Android系统为叻高效分配内存这些组件都会在上下滑动的时候回收子view的内存。在滑动的时候并不能保证AsyncTask可以完成当前任务。此外也不能保证异步任务可以按照顺序完成。
Google在 提供了建议:在AsyncTask中用弱引用来存储ImageView,通过使用弱引用来被检查ImageView是否加载完成
好吧理论上是这样,我们开始荇动:
1. 自定义Drawable去存储异步任务重的弱引用只有这样,才能保证task执行完毕之后ImageView才会显示图片

3. 仅仅这些代码还是不够的,Google 还引入 cancelPotentialWork()来检查是否有其他的task任务在使用当前ImageView如果有,就会取消当前任务取消这个做法是不是很让人眼前一亮呢!



至此,我们已经了解Google 对于并发加載的解决方案只需要在getView()实现它们就可以啦!

 
 
 
 
 
 
这样就可以流畅的展示图片。

 
我们的代码可能会调用findViewById()尤其是當滑动ListView,RecyclerViewGridView的时候,会使得app性能变得糟糕甚至Adapter会返回一个已经被Android系统回收的View,可是你仍然需要初始化加载这个view并刷新它

1. 首先创建 ViewHolder类,存储子View内部所有需要展示的布局
 

 
当我通宵赶完这篇博客的时候我的计算机也提醒我内存不足了 (●’?’●)
 

}

我要回帖

更多关于 cachito 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信