Добро пожаловать в мой личный ад ...
Я работаю с 2 растровыми изображениями, одно из которых представляет собой уменьшенную версию оригинала, которая масштабируется до размеров экрана.Когда я хочу увеличить масштаб, чтобы сделать текст более читабельным, я переключаюсь на исходное растровое изображение, которое будет использоваться для масштабирования.
Весь мой опыт работы с огромными растровыми изображениями приводит к одному решению: обрабатывать полный жизненный циклрастровое изображение самостоятельно.Не просто установите для растровой ссылки значение null, перезапустите ее, прежде чем выпускать ссылку.Также ловите возможную OOME и свободную память там.Очистите все и попробуйте последнее растровое декодирование снова.
У меня есть несколько вызовов, как это:
try {
try {
mBitmap = BitmapFactory.decodeFile(uri, mOptions);
}
catch (OutOfMemoryError e) {
freeMemory();
// retry
mBitmap = BitmapFactory.decodeFile(uri, mOptions);
}
}
catch (OutOfMemoryError e) {
Log.e("THREAD", "FATAL OOME ..." + mPageNumber, e);
}