一起动手编写Android图片加载框架

2019-12-10 18:16:05王冬梅

    另外,我们在以上两段代码中都对mDiskLruCache是否为空进行了判断。这也是很必要的,设想我们做了一堆工作后发现磁盘缓存根本还没有初始化,岂不是很冤枉。我们通过两个if判断可以尽量避免做无用功。

     现在我们已经实现了一个简洁的图片加载框架,下面我们来看看它的实际使用性能如何。 

四、简单的性能测试
     关于性能优化的姿势,Android Developer已经给出了最佳实践方案,胡凯大神整理了官方的性能优化典范,请见这里:Android性能专题。这里我们主要从内存分配和图片的平均加载时间这两个方面来看一下我们的图片加载框架是否能达到勉强可用的程度。完整的demo请见这里:FreeImageLoader

1. 内存分配情况

    运行我们的demo,待图片加载完全,我们用adb看一下我们的应用的内存分配情况,我这里得到的情况如下图所示:

Android,图片加载框架

    从上图我们可以看到,Dalvik Heap分配的内存为18003KB, Native Heap则分配了6212KB。下面我们来看一下FreeImageLoader平均每张图片的加载时间。

2. 平均加载时间

    这里我们获取平均加载时间的方法非常直接,基本思想是如以下所示:

//加载图片前的时间点
long beforeTime = System.currentTimeMillis();
//加载图片完成的时间点
long afterTime = System.currentTimeMillis();
//total为图片的总数,averTime为加载每张图片所需的平均时间
int averTime = (int) ((afterTime - beforeTime) / total)

    然后我们维护一个计数值counts,每加载完一张就加1,当counts为total时我们便调用一个回调方法onAfterLoad,在这个方法中获取当前时间点并计算平均加载时间。具体的代码请看上面给出的demo地址。