2015-04-07 4 views
1

Привет, мое приложение для Android отлично работает на моем устройстве Lenovo a319, в этом устройстве он потребляет 40 МБ оперативной памяти, тем временем, на устройстве Galaxy s5, потребляя 300 Мб для той же сборки (apk). И я получаю много ошибок, таких как проблема с памятью на устройстве Galaxy s5.Проблема с памятью с моим Android-приложением

Для Instance

Из памяти

исключением и

android.view.InflateException: Binary XML файл линия

ошибки. Я нашел это Question, на котором ответили, что высокое разрешение пикселей вызовет исключение памяти, я не могу понять, какие ответы предоставлены в этом Вопросе, любезно предоставите поддержку на том же самом?

EDIT: Спасибо за ответы, но они inacurate я повторно рециркуляция растровых изображений и я сделать их ничтожными, даже называют System.gc(); и моя память постоянна, я просто не понимаю, почему она берет 300 МБ оперативной памяти на sumasung galxy s5 и всего 40 на моем lenovo. Мой lenovo - hdpi s5 - это xxhdpi, если я уверен.

ответ

1

Эта вещь может быть легко исправить для этого

просто добавьте эту строку в тег приложения в файле манифеста

android:largeHeap="true"

как это

<application android:largeHeap="true" android:allowBackup="true" ......

, и если вы хотите более оптимизировать код, то используйте Анализатор памяти в eclipse

+0

лучше исправить ваши утечки? Подобно recycle bitmaps и т. Д., LargeHeap = true doesnt всегда помогает –

+0

отредактировал вопрос – Csabi

+0

да, я знаю, что его лучше исправить утечки, но иногда могут быть большие изображения, поэтому большая проблема - лучшее решение. Думаю, сэр – cnnagpal

2

Похоже, ваше приложение было создано с использованием макетов, определенных в xml-файлах. В этих макетах используются изображения, например изображения для фоновых или исходных изображений для ImageButton или ImageView и т. Д. Все ваши чертежи обычно хранятся в папках drawable-DENSITY. Поэтому вам нужно снизить разрешение всех ваших чертежей, чтобы сэкономить некоторую оперативную память. Например, если у вас есть возможность рисования для ImageView, позвоните ему new_image.jpg и его в drawable-hdpi и его разрешение 800x600 px попытайтесь изменить размер до 400x300 px (для этого вы можете использовать Farstone Image Viewer). Сделайте это с каждым возможным проектом и посмотрите, что произойдет.
Также возможно, что вы показываете изображения в ListViews с помощью некоторых ImageLoader, таких как Glide (рекомендуется) или UIL или Picasso или любого другого использования. Такие загрузчики обычно потребляют много оперативной памяти (которая, однако, настраивается) для нужд кеширования, и из-за этого в один момент AOS не загружает, не создает и не представляет какой-либо макет, который использует изображения сам по себе.
Также я рекомендую вам to lern how to display Bitmaps efficiently вы MUST знаете такие вещи.

+0

отредактировал вопрос – Csabi

0

Помимо растровых изображений и чертежей наиболее распространенной проблемой является утечка памяти через контекст Activity. Удостоверьтесь, что вы не проходите вокруг активности для прослушивателей обратного вызова. Хорошим инструментом для анализа памяти является MAT (Memory Analyzer Tool).Это поможет вам выяснить, утечки памяти в вашем приложении

+0

отредактировал вопрос – Csabi

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