2013-05-03 3 views
0

Dans mon activité j'ailes drawables doivent-ils être recyclés?

final ImageView img = (ImageView) findViewById(R.id.myimage); 

img.setImageDrawable(getdrawable()); //getdrawable() is my own function which returns a drawable 

Ensuite, cette ligne

img.setImageDrawable(getdrawable()); //this line is 

est appelé plusieurs fois pour remplacer le drawable sur la imageview actuelle.

Ai-je besoin de recycler le étirables ou sera le GC faire pour moi? et si je dois recycler alors comment puis-je le faire?

+0

Je vais laisser cette tâche à GC – Blackbelt

Répondre

0

dessinables, comme toute autre chose qui utilise la mémoire, pour obtenir marqué la collecte des ordures chaque fois qu'il n'y a plus de références pointant vers eux. Si vous vous trouvez dans une situation où la mémoire n'est pas libérée dès que vous supprimez la référence au dessinable précédent, eh bien, c'est GarbageCollector pour vous. GC va essayer de faire son travail de la manière la plus efficace possible, ce qui signifie que, selon vous, il y arrive quand il y arrive, et vous ne pouvez pas le faire aller plus vite, même si vous appelez l'objet dispose() méthode.

Lire ce guide pour une explication vraiment bien de ce qui se passe sous les couvertures avec la collecte des ordures.

+0

Il y a un bogue de longue durée dans Android que les allocations natives comme le tampon de pixel Bitmap ne sont pas comptées comme allocation lorsque le garbage collector vérifie l'utilisation de la mémoire. Il finira par Bitmaps bloquera le GC déclenché par la mémoire faible. C'est pourquoi nous devons recycler les bitmaps manuellement. (Le fait de déclencher manuellement GC aide aussi.) Au moins avant ICS (ou peut-être avant JB). – BlueWanderer

Questions connexes