2017-07-25 3 views
0

De mon application, j'essaie d'obtenir d'autres applications installées des ressources dessinables spécifiques. La ressource existe toujours. J'utilise:Mémoire insuffisante lorsque vous essayez d'obtenir des ressources pouvant être retirées à partir d'autres applications

Resources resources = activity.getPackageManager().getResourcesForApplication(packageName); 
int previewResID = resources.getIdentifier("image", "drawable", packageName); 
Drawable myThemePreview = resources.getDrawable(previewResID); 

je reçois le plus de mémoire sur la dernière ligne avant drawable converti en bitmap et apparaît à l'utilisateur

+0

Pouvez-vous poster un peu plus de votre code? Il est difficile de dire ce qui ne va pas avec si peu de lignes de code. – ChrisCarneiro

Répondre

0

Vous pouvez utiliser BitmapFactory::decodeResource en utilisant avec un BitmapFactory.Options avec inSampleSize indiqué pour réduire Mémoire.

Il ressemblerait à quelque chose comme ceci:

Resources resources = activity.getPackageManager().getResourcesForApplication(packageName); 
int previewResID = resources.getIdentifier("image", "drawable", packageName); 
BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inSampleSize = 4; 
Bitmap bitmap = BitmapFactory.decodeResource(resources,previewResId,options); 
+0

Vous pouvez également utiliser options.inJustDecodeBounds = true pour que BitmapFactory récupère la largeur et la hauteur du bitmap cible et les utilise pour calculer inSampleSize. – cwbowron