使用Android P的ImageDecoder有什么用处和优点?

问题描述 投票:9回答:1

背景

Android P使用ImageDecoder类提供了一个用于加载图像的新API。

问题

关于这个类的记录不多,所以我只是好奇它的用法,以及我是否应该考虑尽可能使用它,而不是Glide library,例如,Google itself建议使用它:

对于大多数情况,我们建议您使用Glide库来获取,解码和显示应用中的位图。 Glide在处理与在Android上使用位图和其他图像相关的这些和其他任务时,大部分复杂性都是抽象的。有关使用和下载Glide的信息,请访问GitHub上的Glide存储库。

我发现了什么

我发现了一些关于它的文章,提供了它可以做什么以及如何使用它的线索:

但是,根据我的测试,与Movie类相比,加载GIF动画更糟糕的是使用此API(占用更多内存,使用大约相同的CPU),而Movie类本身比第三方库(如android-gif-drawable)更糟糕。我的tested是一个相当长的GIF动画。在第三方库上花了大约59MB。使用Movie类需要大约168MB,使用新的ImageDecoder API需要200-300MB ...

简而言之,我发现这个API的原因是:

  1. 它应该取代BitmapFactory
  2. 它支持加载动画GIF / WEBP
  3. 它有一些用于前/后处理的监听器
  4. 它应该更高效,但我没有看到它,至少在内存使用方面没有。

问题

  1. 使用此API有什么优势,而不是我们在第三方库中已有的优势?含义为静态图像滑动,为GIF设置“android-gif-drawable”(对于我没有搜索的WEBP,可能是什么东西)?
  2. 它是否在幕后表现更好,我不应该关心它的内存使用情况?
  3. 它有内存/磁盘缓存吗?如果是这样,它现在如何管理其内存缓存,因为Android不会在堆内存中存储位图(关于它here)?
  4. 该API是否可以在支持库中使用?否则我根本不需要使用它...编辑:似乎它可能在支持库上。链接here
android android-bitmap animated-gif android-9.0-pie imagedecoder
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.