2013-02-12 2 views
1

У меня есть простая андроид-приложение. Приложение включает около 50 изображений, в основном формат PNG, но также большинство из них - размер значка. Существует около 5 макетов и использование карт Google и WebView. В самом начале приложения бит составляет менее 6 МБ.my android app использовать много памяти

Затем я запускаю все параметры приложения, а затем я просматриваю настройки приложения -> кешированные процессы, я вижу, что мое приложение использует 70 МБ ОЗУ !!!

Я звоню finish() метод где я могу, но это не помогает. Что может помочь уменьшить использование памяти?

Даже Angry birds использует меньше!

+1

Что коллективный размер изображений на экране против всех изображений. Я предполагаю, что это просто кеширование ресурсов изображения для более быстрой загрузки. – Grambot

+0

Кроме того, PNG могут быть сжаты. – Dan

+0

Я не знаю, что вы имеете в виду размер изображений на экране. Все мои изображения вес 4.40 MB –

ответ

1

Это может быть, что вы загружаете ваши Bitmaps с methods that create immutable Bitmaps и не отпуская их должным образом (вы должны позаботиться, чтобы избавиться от всех своих ссылок или иначе сборщик мусора никогда не будет освободить место они используют.

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

1

лучший способ заключается в использовании 9 патча PNG images для вашего приложения. Это, безусловно, поможет вам уменьшить размер кэша, а также приложение размер более. Разверните код приложения в соответствии с жизненным циклом Android, чрезмерное использование финиша() активирует операцию onpause(), поэтому используйте onDes troy(), где вы хотите убить эту активность.

1

Создать Drawable папки и поместить все те 9 патча изображение there.Deploy OnDestroy(), чтобы заполнить свою деятельность

1

Пожалуйста сжать каждое изображение без влияют на качество изображения, а затем заботиться о просочились памяти. Каждое действие действия завершено, а затем завершает эту деятельность. после выхода из приложения. уничтожить все запущенные методы. если вам нужно очистить память вручную, вызвав метод .recycle() вашего объекта растрового изображения. Я думаю, что это поможет вам сократить память.

0

попробовать что-то вроде этого, это может помочь, я думаю:

@Override 
protected void onDestroy() { 
super.onDestroy(); 

unbindDrawables(findViewById(R.id.LayoutId)); 
System.gc(); 
} 
+1

Можем ли мы использовать 'unBindDrawables' для любого вида? Есть ли какие-либо неблагоприятные последствия, например, сбой приложения или что-то еще? –

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