Я пишу приложение графического дизайна для Android, где пользователь может добавить несколько изображений в документ, где каждое изображение хранится в виде растрового объекта.Каждое растровое изображение имеет размер примерно 800x400 пикселей и использует пиксельный формат ARGB8888 (т.е. ~ 1,5 МБ каждое).
Я знаю, что большинство устройств Android первого поколения имеют ограничение кучи 16 МБ, и это ограничение составляет 24 МБ.и больше для новых телефонов.Я также знаю, что память для растровых изображений выделяется извне, но я запутался и что это означает.
Мой вопрос: как я могу сказать во время выполнения, что добавление нового растрового изображения меня тоже получит?близко к пределу памяти?
Прежде чем кто-то предложит "не использовать столько памяти", я знаю, что у меня есть один вариант - ограничить количество растровых изображений, которые пользователь может создать, чтобы я знал, что этот предел безопасендля самых простых телефонов Android.Тем не менее, я хотел бы, чтобы телефоны с большим пределом памяти поддерживали большее количество растровых изображений и / или большие растровые изображения.
Я знаю, что нужно проверять исключения OutOfMemory при выделении растровых изображений.Однако будут ситуации, когда у меня останется только достаточно памяти для выделения еще одного растрового изображения.После этого все приложение будет нестабильным, потому что даже выделение небольших вещей, таких как строки, может вызвать исключение OutOfMemory.Это то, чего я хочу избежать.
Я не уверен, как определить «слишком близко к пределу памяти», но я подозреваю, что-то вроде «не выделяйте более половины вашей доступной памяти для растровых изображений"будет работать нормально, так как другие мои структуры данных, которые я храню в памяти, малы по сравнению.