2016-03-08 2 views
0

Я работаю над приложением Android, где я получаю свои данные, которые включают в себя изображения, хранящиеся в виде блоков из базы данных, а затем, как только я получу эти данные в своем приложении, я преобразовываю все это в растровые изображения и сохраняю данные в ArrayList для последующего использования. При выполнении этого для двух десятков изображений требуется около 8 секунд; как я могу создать битмапы быстрее. Изображения различаются по высоте. В цикле for я превращаю строку изображения в массив байтов, а затем использую BitmapFactory.decodeByteArray. Я также использую options.inSampleSize = 4.Как создать растровые изображения быстрее в Android?

+0

Если вы декодирование много изображений подряда, как это, вы, вероятно, нужно найти новый способ делать вещи. Это займет много памяти и приведет к проблемам OOM. Особенно, если вы «сохраняете в ArrayList для последующего использования». Если вы не используете их сейчас или в ближайшие несколько секунд, вы не должны их загружать. –

+0

Я заполняю список этими элементами, поэтому мне нужно загрузить их все в это время. Есть ли лучший способ сделать это? – user3705359

+0

Lazy loading. Сохраните информацию, необходимую для загрузки элемента позднее, и загрузите его только при необходимости. Растровые изображения большие. Они берут 4 байта высоты * высоты в памяти. Хранение нескольких маленьких - это не большая проблема, но все они - проблема. Потерянная загрузка позволит вам сэкономить много ошибок OOM позже и исправить ошибки вашего перфоратора (так как вы будете распространять загрузку и делать это только тогда, когда это необходимо). Предпочтительно комбинировать с кешем (кеш LRU может иметь максимальный размер, накладываемый на него, поэтому вы не будете использовать больше предопределенного максимального объема памяти на изображениях). –

ответ

0

Прочитайте изображения из базы данных и сохраните их в локальной кеш-памяти, а затем прочитайте изображения из кэш-памяти, это эффективный способ отображения растрового изображения.

См ссылки:
https://developer.android.com/training/displaying-bitmaps/cache-bitmap.html

+0

Как только я создаю растровое изображение, я добавляю их в представление. Проблема заключается в времени, которое требуется для создания каждого растрового изображения. – user3705359

Смежные вопросы