Android Image Loading 库如何解决加载缓慢的问题?

在这篇文章中,我们将学习 Android Image Loading 库如何解决图像加载缓慢的问题。

快速加载图像对于更好的用户体验非常重要。我们必须了解它是如何在幕后完成的。

当涉及到 Android 面试时,这些概念很重要。

因此,我正在阅读 Android 中各种图像加载库的源代码,例如Glide、Fresco等。

这些库在内部为我们做了很多事情,这样我们就可以使用它们并轻松完成我们的任务。他们让我们的生活更轻松。

他们做的一件事是尽可能快地加载图像。

让我们了解一下 Android Image Loading 库如何快速加载图像。

将位图加载到视图中时,加载缓慢是另一个问题。加载缓慢的主要原因之一是,即使视图不在窗口或不再需要该任务,我们也不会取消下载或解码位图之类的任务,因此甚至有许多任务正在完成虽然我们不需要它们,所以加载刚刚出现在窗口中的实际图像需要时间。

图像加载库喜欢Glide并Fresco照顾这一点,它们会正确取消所有任务并仅加载用户可见的图像。

这些库知道活动和片段生命周期,这样他们就知道需要取消哪些图像下载或位图解码任务。

您必须考虑他们如何了解活动和片段生命周期。我会以Glide.

我们Glide这样使用:

Glide.with(fragment)
    .load(url)
    .into(imageView);

在这里,我们可以看到我们正在传递 Fragment,这样Glide订阅了 Fragment 的生命周期事件。同样,它发生在活动和视图上。

这就是他们通过在适当的时间取消不再需要的任务来解决图像加载缓慢问题的方法。这些库所做的另一件事是它们将图像缓存在两个级别。让我们也了解一下。

他们创建了一个内存缓存,这样他们就不必一次又一次地解码图像,因为解码需要时间。这些库创建一些可配置大小的缓存来捕获位图。

它们维护两个级别的缓存:

  • 内存缓存

  • 磁盘缓存
    当我们向库提供 URL 时,它们会执行以下操作:

  • 他们检查具有该 URL 键的图像是否在内存缓存中可用。

  • 如果存在于内存缓存中,它们只是通过从内存缓存中获取位图来显示位图。

  • 如果内存缓存中不存在,它们会检查磁盘缓存。

  • 如果存在于磁盘缓存中,它们从磁盘加载位图,也将其放入内存缓存中,并将位图加载到视图中。

  • 如果磁盘缓存中不存在,他们从网络下载图像,将其放入磁盘缓存,也将其放入内存缓存,然后将位图加载到视图中。
    -通过这种方式,它们可以加快加载速度,因为直接从内存缓存中显示总是更快。

因此,他们主要做以下两件事:

  • 在适当的时候取消不再需要的任务。
  • 在两个级别缓存图像。

这就是关于 Android Image Loading 库如何解决图像加载缓慢问题的全部内容。

我们将在即将发布的博文中了解这些库所做的更多事情。

现在就是这样。

谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值