2015-10-23 1 views
0

Я разрабатываю приложение. Там у меня есть 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(); 
    } 

в любой деятельности. Так почему же так много памяти? Я храню эти значки неправильно? Что мне теперь делать?

+0

'Я не использую растровые изображения ... ... и как вы называете свои значки (' R.drawable.imagexyz')? Разве это не растровые изображения (png-файлы)? –

+0

Спасибо. Я не знал, что картинка - это растровое изображение. @ FrankN.Stein –

ответ

0

Ну, для эффективного размера у вас есть 2 варианта, либо загружайте изображение онлайн, а затем берете его оттуда, потому что теперь у всех есть доступ к интернету на смартфоне, поэтому получение изображений из Интернета - неплохая идея, чтобы сохранить кучу сохранения (в MBs).

String imageUri = "http://example.com/myimage.png"; // from Web 

ИЛИ

2-й вариант, чтобы загрузить файлы на SD-карте после установки приложения, а затем взять файл с карты памяти SD. Оба варианта эффективны. Выберите, с кем когда-либо континент.

String imageUri = "file:///mnt/sdcard/myimage.png"; // from SD card 
+0

, чтобы показать их в небольшом значке уведомления. Должно быть, я должен поместить эти файлы в число доступных. @Mike –

+0

Как это влияет на проблемы памяти? Я не думаю, что он спрашивает о проблеме с хранилищем/размером приложения. –

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