2017-01-05 4 views
3

J'ai ce code et je veux faire la même chose mais dépenser moins de ram. Une idée pour définir un chargeur d'image dans chacun des 300 ImageView que je génère ou quelque chose de similaire pour résoudre ce problème?App dépense trop de RAM quand je fais de grandes boucles

DisplayMetrics lDisplayMetrics = getResources().getDisplayMetrics(); 
int widthPixels = lDisplayMetrics.widthPixels; 
for (int getDrawables = 0; getDrawables < 300; getDrawables++) 
{ 
    final ImageView icoView = new ImageView(ImageEditor.this); 
    icoView.setImageResource(getResources().getIdentifier("icon_"+getDrawables, "drawable", getPackageName())); 
    icoView.setLayoutParams(new LinearLayout.LayoutParams(widthPixels/7,widthPixels/7)); 
    gridlayout.addView(icoView); 
    int idGen = View.generateViewId(); 
    icoView.setId(idGen); 
    icoView.setTag("icon_"+getDrawables); 
    gridlayout.setColumnCount(6); 
} 

Répondre

0

Solution: Ajout new drawables mais avec moins de résolution et en utilisant là pour le sélecteur de mes autocollants. En utilisant GridView en tant que recycleur, je ne réduis que 500 Mo d'utilisation de la RAM. Une autre méthode consiste à convertir des tirages en bitmaps, puis à redimensionner les bitmaps.

2

N'ajoutez pas autant d'images à votre mise en page. Ils ne seront pas visibles tout de suite de toute façon je suppose. Utilisez quelque chose comme un GridView ou un RecyclerView qui gère le recyclage des vues pour vous.

+0

Pouvez-vous m'envoyer un lien ou quelque chose pour obtenir des références à ce sujet? –

+0

J'ai modifié ma réponse pour inclure des liens pertinents. –

+0

Cela me donne le même problème avec ram (j'essaie GridView), pas résolu ... 'E/AndroidRuntime: FATAL EXCEPTION: principal Processus: com.rogerrv.fillthem, PID: 3723 java.lang.OutOfMemoryError: Échec d'allouer une allocation 7225356 d'octets avec 3387472 octets libres et 3MB jusqu'à OOM à dalvik.system.VMRuntime.newNonMovableArray (native Method) à android.graphics.BitmapFactory.nativeDecodeAsset (native Method) .... ' –