2015-10-23 25 views
0

我正在開發一個應用程序。我在drawable-hdpi文件夾中有1200多個圖標。每秒我都會拿起一個我需要展示的圖標。所有圖標均爲48*48像素,格式爲.png。他們總共佔用774 KB空間。我正在運行一個Service,然後從那裏我每秒選擇一個圖標。而在這ServiceonCreate()我存儲drawable IDS這樣的方式:如何在Android中使用大量圖標時管理內存?

speed = new ArrayList<Integer>(); 
    speed.add(R.drawable.image000); 
    speed.add(R.drawable.image001); 
    speed.add(R.drawable.image002); 
    //...and so on 

我的應用程序是如此簡單。它添加了一些數字,並從相應的數組列表房間中獲取圖標,並將其顯示在通知狀態欄中。喜歡:

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

那麼高效的大小,你有兩個選擇要麼在網上上傳的圖片,然後從那裏,因爲現在每個人都有智能手機互聯網這樣從網絡獲取圖像是不是一個壞主意,以節省一堆保存(在MBS)。

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

OR

第二個選項是安裝應用程序後,在SD卡上的文件上傳,然後採取從SD卡上的文件。兩種選擇都很有效。選擇你與哪個大陸合作。

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

將它們顯示在通知的小圖標中我必須將這些文件放在可繪製的位置。 @Mike –

+0

它如何影響內存問題?我不認爲他問存儲/應用程序大小問題。 –