Я разрабатываю приложение. Там у меня есть 1200+ значков в папке drawable-hdpi
. Каждую секунду я собираю значок, который мне нужно показать. Все значки - 48*48
пикселей и в формате .png
. Они занимают площадь 774 KB
. Я запускаю Service
, и оттуда я выбираю значок каждую секунду. И в onCreate()
из этого Service
Я хранение drawable
идентификаторов, как таким образом:Как управлять памятью, когда мне приходится использовать множество значков в Android?
speed = new ArrayList<Integer>();
speed.add(R.drawable.image000);
speed.add(R.drawable.image001);
speed.add(R.drawable.image002);
//...and so on
Моего приложение так просто. Он добавляет некоторые цифры и берет значок из соответствующей комнаты arraylist и показывает его в строке состояния уведомления. Как:
nm.notify(1, builder.setContentTitle("up: " + s + " down: " + s2)
.setContentText(g)
.setSmallIcon(speed.get(xValue + yValue))
.setContentIntent(contentIntent)
.setPriority(128)
.build());
Итак, теперь проблема в том, что мое приложение занимает слишком много памяти (Arround 105-120 MB)
. Я не использую Bitmap
. Даже я называю этот метод в каждую секунду в Service
:
public void freeMemory() {
System.runFinalization();
Runtime.getRuntime().gc();
System.gc();
}
, а также добавили этот код:
@Override
public void onBackPressed() {
super.onBackPressed();
this.finish();
}
в любой деятельности. Так почему же так много памяти? Я храню эти значки неправильно? Что мне теперь делать?
'Я не использую растровые изображения ... ... и как вы называете свои значки (' R.drawable.imagexyz')? Разве это не растровые изображения (png-файлы)? –
Спасибо. Я не знал, что картинка - это растровое изображение. @ FrankN.Stein –