Так как я не смог найти фактический код, который я обычно использую, я просто проведу вас через процесс, которого должно быть более чем достаточно.
Как вы можете видеть преобразование растрового изображения также происходит в потоке пользовательского интерфейса (это тяжелый процесс, верно?), он блокирует пользовательский интерфейс.
Это правда, что растровые изображения, как правило, очень тяжелые и могут вызывать OOM без каких-либо сомнений и, следовательно, обработка их должна быть вашим главным приоритетом! Для обработки растровых изображений вам необходимо выполнить следующие действия, которые оптимизируют их до максимума и действительно быстро, без блокировки вашего пользовательского интерфейса.
Используйте асин c методы для фактического преобразования байтов в битовый массив, используя следующий метод:
var bmp = await BitmapFactory.DecodeByteArrayAsync(byteArray, 0, byteArray.Count(), options);
Это не будет делать декодирование в потоке пользовательского интерфейса и не замораживание вашего приложения. Также не добавляйте это в ваше состояние использования, так как оно будет утилизировать его, пока на него все еще ссылается ваше изображение, которое, в свою очередь, вызовет исключение.
Кроме того, опции не нужно выбрасывать, поскольку они совсем не тяжелые и могут иметь значение G C 'd, когда наступит подходящее время, просто оставьте его, поскольку вы даже можете использовать его позже, если потребуется!
Кроме того, метод recycle для растрового изображения перезапускает ваше растровое изображение er go, делая его бесполезным, и REMEMBER , если элемент пользовательского интерфейса использует это растровое изображение, вы получите исключение объекта, а StackTrace иногда не будет быть ясно, что вызвало это, то есть беспорядок без видимой причины. Лучший способ справиться с этим - чистить свои растровые изображения только тогда, когда вы знаете, что они сейчас бесполезны, т. Е. На уровне страницы, когда вы go переходите на другую страницу, а не когда вы все еще ее используете. Также необходимо повторно обрабатывать вашу страницу, т. Е. Изображение должно быть переназначен таким образом, чтобы указанное выше исключение не генерировалось снова!
Кроме того, убедитесь, что вы оптимизировали растровое изображение в соответствии с размером держателя просмотра, т. е. убедитесь, что ваше изображение предназначено только для того, что вы можете делать с метод ниже