2013-05-25 7 views
0

J'ai créé un bitmap et l'utiliser dans Canvas pour dessiner un cercle et cette méthode est appelée chaque fois que l'activité est appelée et que l'activité est appelée plusieurs fois pour que je reçoive une erreur comme 1536000-byte external allocation too large for this process Je sais que l'erreur est Mémoire problème, mais comment effacer bitmap et utiliser également à la deuxième fois appel d'activité ..Comment effacer la mémoire bitmap dans Android?

Mon code est:

private void Draw_Hold_Circle() { 
     Bitmap bitmap_hold = Bitmap.createBitmap(width, height, 
       Bitmap.Config.ARGB_8888); 
     Canvas canvas_hold = new Canvas(bitmap_hold); 
     canvas_hold.drawArc(rect_open, 0, 360, false, mOutlinePaint); 

    } 

Cette méthode est appelée 4 fois et le MainActivity peut appeler plusieurs fois Comment maintenir bitmap et sa mémoire?

+0

Vous pouvez appeler bitmap.recycle(). Mais c'est à gauche à la gc pour libérer de la mémoire. – Raghunandan

+0

Déjà appelez recycle() dans Ondestroy mais obtenir une erreur comme Canvas utilisé depuis longtemps bitmap .. – ckpatel

+0

http://stackoverflow.com/questions/477572/strange-out-of-memory-issue-while-loading-an-image -to-a-bitmap-objet. – Zombie

Répondre

0

Y a-t-il une raison particulière pour laquelle vous souhaitez conserver l'image en mémoire? Si je ne me trompe pas, vous appelez votre méthode "chaque fois que votre activité est appelée" donc je suppose que vous voulez dire chaque fois qu'il a commencé avec startActivity(). Si tel est le cas, il est inutile de maintenir toutes les images en mémoire à la fois puisque l'utilisateur sera en mesure de voir celui sur votre activité de premier plan. Je vous suggère de sauvegarder votre image dans un fichier sur votre méthode onStop() et de la reconstruire, si nécessaire, sur votre méthode onResume().

Questions connexes