Monodroid/Android используют android:largeHeap на старых устройствах
Я использую android:largeHeap в своем Приложении, чтобы получить больше памяти, потому что у меня есть большое изображение в просмотре прокрутки, в противном случае мое приложение зависло бы с исключением из памяти.
У меня есть 2 устройства, одно с Android 4.2 Jellybean и другое с Android 2.3 Gingerbread. На 4.2 андроид: largeHeap работает нормально, но на 2.3 я не могу его использовать.
Есть ли способ порадовать оба устройства? Спасибо за помощь.
3 ответа
Я полагаю, это используется с getLargeMemoryClasss ()? Это доступно только из API 11 // Android 3 // Соты.
Как примечание, я не уверен, что вам это нужно, не могли бы вы просто масштабировать изображение?
Параметр largeHeap был добавлен в Honeycomb(3.0), поэтому он не будет работать на более низких устройствах.
Однако использование параметра largeHeap НЕ является решением. Это должно использоваться в качестве абсолютного последнего средства. Это заставит Android прекратить любые фоновые процессы или приложения, чтобы получить эту дополнительную кучу, которая является большой нет-нет!
Вы говорите, что у вас есть большое изображение в ScrollView. Вы пытались использовать BitmapFactory, чтобы сначала соответствующим образом масштабировать изображение?
РЕДАКТИРОВАТЬ: Кроме того, вы упомянули, что вы разделили изображение на три. Не делайте этого, так как каждое растровое изображение будет потреблять дополнительную память. Вместо этого сохраните его как одно растровое изображение, но выполните масштабирование всего растрового изображения.
Здесь подробно обсуждается стекопоток о том, как эффективно использовать растровые изображения, чтобы ошибка внешней памяти не возникала и вам не приходилось увеличивать размер кучи приложения.