Ошибка нехватки памяти в Android - слишком большое изображение - PullRequest
0 голосов
/ 25 мая 2011

В моей игре у меня есть растровое изображение, которое служит фоном игры (нарисовано на холсте).Чем больше изображение, тем больше «пространства» в игре для перемещения пользователя, поэтому я хочу, чтобы растровое изображение было как можно большим, не вызывая проблем с памятью.огромный битовый массив, который сразу же вызвал ошибку нехватки памяти при инициализации, поэтому я немного сжал битовый массив.Но я думаю, что это слишком мало.У меня вопрос: как измерить «безопасный» предел используемой памяти?

Я использовал следующие методы и прочитал вывод в CatLog:

Debug.getNativeHeapAllocatedSize();
Log.v("MEMORY",String.valueOf(Debug.getNativeHeapAllocatedSize()) );                    
Log.v("FreeMEMORY",String.valueOf(Debug.getNativeHeapFreeSize ()) );

Результаты,:

 05-25 09:53:54.044: VERBOSE/MEMORY(23044): 9715624

 05-25 09:53:54.044: VERBOSE/FreeMEMORY(23044): 61528

Свободная память кажется совсем маленькой?Это сокращение близко к кости?

Ответы [ 2 ]

1 голос
/ 22 июля 2011

Если вы уменьшаете растровое изображение, то сначала оно загружается в память и в итоге выдает ошибку.

Вам нужно использовать то, что называется BitmapFactory.Options, которое предварительно вычисляет перед загрузкой растрового изображения.

См. Максимальный проголосовавший ответ на этот вопрос.

1 голос
/ 25 мая 2011

измените размер изображения, используя выборку, и сохраните изображения в файле на SDCard, было бы лучше

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...