Я бы хотел использовать параметр Android: LargeHeap = "true" в манифесте, чтобы получить немного дополнительной памяти (мы имеем дело с растровыми изображениями размером 5+ МБ на дисплеях с высоким разрешением 1980x1200 и ожидаем даже большие дисплеи в ближайшее время.
У меня закончились все обычные уловки, чтобы справиться с плохой обработкой памяти в Android для растровых изображений (т.е. нет никакого способа узнать, есть ли достаточно большая дыра во фрагментированной памяти, кроме как попытаться молиться, чтобы она не вылетела ). Я уже потратил недели на оптимизацию, обрезку и применение других приемов для минимизации памяти и предотвращения сбоев. Это уловка того, какие функции могут быть реализованы в 2.x по сравнению с 3.x / 4.x, но сохранить все это в одном приложении. Не нужно указывать на «как оптимизировать для растровых изображений» - я уже прошел через это и применил все, что мог.
LargeHeap не поддерживается в версии 2.x, и я использую другие изображения для экранов с более низким разрешением, для которых не требуется опция LargeHeap в 2.x. (тоже нет проблем с нехваткой памяти).
Когда android: minSdkVersion = "8", опция Android: LargeHeap вообще не разрешена.
Есть ли способ условно включить LargeHeap для систем с 3.x и игнорировать его для 2.x? Или само приложение пытается установить LargeHeap при обнаружении 3.x? Я не могу найти способ сделать это, но, возможно, я упустил из виду какой-то трюк.
Я также понимаю, что LargeHeap довольно ужасен, но у нас заканчиваются другие уловки. В идеале было бы неплохо делать LargeHeap программно, только когда это действительно необходимо (и разрешено) в программе OnCreate.