2014-02-16 3 views
0

В настоящее время мои товарищи по группе и я делаю приложение для Android, которое поможет детям освоить базовые знания. У него будет учебный модуль и модуль викторины для детей. У меня возникла проблема с появлением большого количества ошибок Out Of Memory из приложения.Лучший способ избежать ошибок в памяти - Android

Приложение всегда создает ошибки в памяти, когда играет музыку в фоновом режиме, воспроизводит анимацию, переключается между несколькими изображениями в ImageSwitcher и воспроизводит аудио. Я считаю, что моя проблема заключается в удалении неиспользуемых объектов в моих действиях.

Я много раз искал в Интернете, но я не мог найти ответ, который решил нашу проблему. Некоторые другие решения настолько сложны, что я даже их не понимаю. Кто-нибудь может помочь предотвратить ошибки OOM при использовании таких компонентов, как MediaPlayer, XML Animations, ImageSwtcher и SoundPool? Что я должен использовать с каждым? Обслуживание? Нить? Обработчик? ImageSwitcher является головной болью, он хорош в начале, но когда я собирался просмотреть 16-е изображение в списке, появляется ошибка OOM.

Спасибо за каждого, кто нам поможет. Я буду рад показать наши коды, но у него так много комментариев, и я думаю, что у кого-то есть ответ на этот вопрос без наших кодов новичка. :)

+0

1. Android кучи ограниченное. 2. Загруженные изображения хранятся в куче. 3. Куча, необходимая для изображения, - это высота x ширина x 4 байта по умолчанию. 4. Не пытайтесь сохранить 16 изображений. 5. Используйте инкапсуляцию. 6. Google за 1-5. – Simon

+0

Ничего себе! Спасибо за ответ. Я буду искать их. Должен ли я использовать ImageSwitcher для изображений? или есть ли лучший подход? Что является лучшим способом реализации звуков и музыки в Android? – anonymous

ответ

1
  1. Ограничить объем ваших переменных
  2. Не забудьте закончить деятельность и сделать необходимую очистку после уничтожения обратного вызова (чистые слушателей и т.д.)
  3. Learn инструмента профилирования памяти, таких как Eclipse, Mat часть Затмения инструменты Android. Для того, чтобы найти проблемы с использованием памяти, см debugging memory
  4. Включить библиотеку загрузки изображений в вашем коде, такие как Android-Universal-Image-Loader или Picasso, чтобы получить много кода котла пластины для свободной памяти и утилизации
+0

Извините, если бы задали слишком много вопросов, но как я могу закончить деятельность и сделать очистку? Я не знаю, каков ваш ответ в номерах 3 и 4, но спасибо. Я буду искать их. – anonymous

+0

@ anonymous обновил мой ответ со ссылками. Что я имею в виду о части очистки, так это то, что в вашем коде могут быть утечки памяти (я не видел ваш код, поэтому я не могу сказать) это обычно происходит, когда Контекст (активность) или слушатель и т. Д. Не освобождается после выхода из этой активности (такие очистки обычно выполняются в onPause или onDestroy, в зависимости от переменной ...) – Magnus

+1

Спасибо, сэр. Я просмотрю свои коды и те ссылки, которые вы дали. Будьте здоровы. – anonymous

Смежные вопросы