Android 纯手工打造ImageLoader

-你好, 我的朋友! (是不是有点过于正式了), 如果you are a big man in Android, 你绕行! 今天这篇博客是和想要进阶的小朋友!
这篇博客是给大家讲讲时下比较流行的lruCache算法, 这是什么意思呢, 最近最少使用算法, 就是说一个皇帝后宫佳丽三千, 有一部分基本不用, 这样时间一长, 皇帝有找小的, 没房子住了(皇宫也是有限的嘛), 那些不用的妃子就要被废掉了, 我们的lrucache就是这样道理, 当我们从网络或者本地获取太多图片的时候, 我们一般会先存储在内存,然后是本地, 本地好说, 你的硬盘应该比我的都比, 我懂得; 但是内存了, android系统给每个手机分配的内存有限, 所以说内存资源太珍贵了; 而android中图片最消耗资源, 当内存不足的时候 , lrucache就要动手了, 他就会不经常用的图片从内存中删除掉从而保证不会发生oom, 系统crash; 说了这么多, 朕先喝口水!!!
-**下面就是内存缓存的代码:

package cn.xianzaishi.retroidfdemo.interfaces;

import android.graphics.Bitmap;
import android.util.LruCache;

/**
 * Created by Administrator on 2016/9/5.
 */
public class BitmapUtils {

    LruCache<String, Bitmap> lruCache;

    //构造方法
    public BitmapUtils(LruCache<String, Bitmap> lruCache) {
        //获取内存大小,而一般我们给图片分配的是总内存的八分之一;
        long memory = Runtime.getRuntime().maxMemory() / 8;
        lruCache = new LruCache<String, Bitmap>((int) memory){
            @Override
            protected int sizeOf(String key, Bitmap value) {
                return value.getRowBytes() * value.getHeight();
//                return super.sizeOf(key, value);//这里是因为有api限制, 所以没用,
            }
        };

    }


    //url 图片的url
    public void setLruCache(String url, Bitmap bitmap){
        lruCache.put(url,bitmap);
    }


    public Bitmap getLruCache(String url){
       return lruCache.get(url);
    }


    //本地缓存的代码请看上篇博客,利用的是bitmapFactory.decode方法
    //从网络获取的代码就不写了, 没什么技术含量, 请求网络的框架一大堆, xUtils, volley, okhttp,
    //onHttp, retrofit, asynctask等等, 操作的原理都已一样的,这些都是工具, 当我们从网络获取图片后
    // 要率先从到内存, 再从到本地, 读取的时候先从内存读,如果有读取并,return 阻止代码执行后面的读取
    //本地缓存的代码,如果内存没有就读取后面的本地缓存,还没有就从网络获取了



}

好了,今天就写到这里了!好累!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值