Android图片加载(3)
2015-11-03 13:17
513 查看
缓存(LruCache)
为了加快图片加载速度,我们经常需要将已加载好的一定数量的图片存放于内存中,以提高用户体验,这里我们使用LruCache类实现内存缓存。LruCache类位于android.util包内,可以通过以下代码进行声明:
private android.util.LruCache<String, Bitmap> mMemoryCache;
通过如下函数可以进行LruCache的初始化:
public void initLruCache(){ // 获取应用程序最大可用内存 int maxMemory = (int) Runtime.getRuntime().maxMemory(); int cacheSize = maxMemory / 8; // 设置图片缓存大小为程序最大可用内存的1/8 mMemoryCache = new android.util.LruCache<String, Bitmap>(cacheSize) { @Override protected int sizeOf(String key, Bitmap bitmap) { return bitmap.getByteCount(); } }; }
由于缓存区域肯定是固定的,所有我们把LruCache类设计成单例的,详细的LruCache类源码如下所示:
public class LruCache {
private android.util.LruCache<String, Bitmap> mMemoryCache;
private static LruCache mLruCache = null;
private LruCache(){}
//设计成单例模式,保证引用的是惟一的缓存区
public static LruCache getInstance(){
if (mLruCache == null){
mLruCache = new LruCache();
}
return mLruCache;
}
public void initLruCache(){ // 获取应用程序最大可用内存 int maxMemory = (int) Runtime.getRuntime().maxMemory(); int cacheSize = maxMemory / 8; // 设置图片缓存大小为程序最大可用内存的1/8 mMemoryCache = new android.util.LruCache<String, Bitmap>(cacheSize) { @Override protected int sizeOf(String key, Bitmap bitmap) { return bitmap.getByteCount(); } }; }
//设置该函数同步,防止同时有多个线程操作,保护数据的完整,安全。
public synchronized void addBitmapToLruCache(String key,Bitmap bitmap){
if (getBitmapFromMemoryCache(key) == null) {
mMemoryCache.put(key, bitmap);
}
}
public Bitmap getBitmapFromMemoryCache(String key) {
return mMemoryCache.get(key);
}
public void removeBitmapFromLruCache(String key){
mMemoryCache.remove(key);
}
//我没有写清除缓存的代码,大家可以自己写一下很简单的。
}
好了,我们的缓存就讲到这里,这样我们就基本完成了我们工具类的书写,其中第一讲讲的是实体类和MediaProvider,第二讲是PhotoBitmapFactory(生产Bitmap的类),这一讲是缓存工具类,大概可以看出我是从Dao层到Service层讲的,下一讲我们就开始讲具体的异步请求了,把拿到的数据展示出来噻。
相关文章推荐
- Android:开源框架xutils介绍
- Android图片截取
- android 恢复不小心删除的文件
- Android程序打包成APK
- Android QLite 分页查询 增删改查
- Android 中加载v4包里面的fragment
- Android操作联系人
- 如何得知手机电量?
- Android动画总结
- Android触发器组件BroadcastReceiver详解
- Android音量调节AudioManager
- Android绘制圆形图片的方法总结
- 《疯狂Android讲义》读书笔记1.Android应用与开发环境
- Android中的Selector的使用方法
- Android--发送短信,并且通知发送方
- Hide-Music-Player 一个完整的音乐播放器《IT蓝豹》
- 自定义toast
- android shape的使用
- android studio win7开发环境
- Android NDK生成及连接静态库与动态库