В чем польза и преимущества использования ImageDecoder из Android P? - PullRequest
0 голосов
/ 30 апреля 2018

Фон

Android P представляет новый API для загрузки изображений, используя ImageDecoder класс.

Проблема

Немного документировано об этом классе, поэтому мне просто любопытно, как его использовать, и стоит ли мне использовать его, когда это возможно, вместо Glide library , например , который сам Google рекомендует использовать:

В большинстве случаев мы рекомендуем использовать библиотеку Glide для извлечения, декодировать и отображать растровые изображения в вашем приложении. Glide рефератов из большинства сложность в решении этих и других задач, связанных с работой с растровыми изображениями и другими изображениями на Android. Для получения информации об использовании и скачав Glide, посетите хранилище Glide на GitHub.

Что я нашел

Я нашел несколько статей об этом, дающих подсказки о том, что он может сделать и как его использовать:

Однако, согласно моим тестам, загрузка GIF-анимации хуже с использованием этого API (занимает больше памяти, использует примерно тот же процессор) по сравнению с классом Movie, который сам по себе хуже, чем сторонние библиотеки, такие как android-gif-drawable . То, что я протестировал , довольно длинная анимация GIF. На стороннюю библиотеку ушло около 59МБ. При использовании класса Movie это заняло около 168 МБ, а при использовании нового API ImageDecoder - 200–300 МБ ...

Итак, вкратце, я обнаружил, что это API:

  1. Он должен заменить BitmapFactory
  2. Поддерживается загрузка анимированных GIF / WEBP
  3. Имеется несколько слушателей для предварительной / последующей обработки.
  4. Он должен быть более эффективным, но я не вижу его, по крайней мере, не с точки зрения использования памяти.

Вопросы

  1. Есть ли какие-либо преимущества использования этого API по сравнению с тем, что мы уже имеем в сторонних библиотеках? Значение Glide для статических изображений и «android-gif-drawable» для GIF (и, может быть, что-то для WEBP, которое я не искал)?

  2. Работает ли он лучше за кулисами, и мне наплевать на использование памяти?

  3. Есть ли у него кеш памяти / диска? Если да, то как он управляет своей кэш-памятью сейчас, когда Android не хранит растровые изображения в куче памяти (писал об этом здесь )?

  4. Возможно ли, что этот API будет доступен в библиотеке поддержки? В противном случае я не вижу особой необходимости использовать его вообще ... РЕДАКТИРОВАТЬ: кажется, это может быть в библиотеке поддержки. Ссылка здесь .

...