Je travaille sur une application (non écrite par moi) qui a une activité composée de trois onglets, chacun correspondant à son propre fragment (je n'ai jamais utilisé de fragments auparavant). Chaque onglet/fragment affiche des structures de données qui consomment beaucoup de mémoire. Je veux être confiant que lorsque je passe d'un onglet à l'autre que la mémoire consommée par l'onglet/fragment sortant est entièrement libérée. avant que le prochain démarre. Ainsi, par exemple, il y avait une image bitmap affichée par le fragment sortant - serait-il essentiel de faire d'abord un bitmap.release() pour s'assurer que le fragment libère toute sa mémoire? Écoute un événement de changement d'onglet sur votre contrôleur d'onglet.onglets/fragments et fuite de mémoire
0
A
Répondre
0
tabLayout.setOnTabChangedListener(<listener>);
sur la méthode de rappel de votre auditeur (onTabChanged(int index, boolean isUserInput))
, obtenir le fragment précédent, appelez dessinables unbind sur son point de vue d'une manière récursive (u besoin de l'écrire). Après l'avoir fait, vous pouvez également appeler le System.gc()
pour donner un indice à Dalvik VM d'exécuter le garbage collector (juste un indice, aucune garantie).
exemple de code pour la déliaison:
public static void unbindDrawables(@Nullable View view) {
if (view == null) {
return;
}
if (view.getBackground() != null) {
view.getBackground().setCallback(null);
}
if (view instanceof ImageView && ((ImageView) view).getDrawable() != null) {
((ImageView) view).getDrawable().setCallback(null);
}
if (view instanceof ViewGroup) {
if (view instanceof AbsListView) {
// Clean out list view
List<View> cells = Lists.newLinkedList();
((AbsListView) view).reclaimViews(cells);
if (cells != null) {
for (View c : cells) {
unbindDrawables(c);
}
}
} else {
for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {
unbindDrawables(((ViewGroup) view).getChildAt(i));
}
}
}
}
Questions connexes
- 1. ctypes et fuite mémoire
- 2. Délégué de NSXMLParser et fuite de mémoire
- 3. fuite de mémoire de NSMutableArray et NSDictionary
- 4. Profilage de la mémoire et recherche de fuite de mémoire
- 5. UITextView fuite de mémoire
- 6. Fuite de mémoire CoreMIDI?
- 7. AndEngine fuite de mémoire
- 8. AudioServicesCreateSystemSoundID fuite de mémoire?
- 9. JAXBContext.newInstance fuite de mémoire
- 10. Fuite de mémoire Android
- 11. ListView fuite de mémoire?
- 12. Fuite de mémoire C#?
- 13. sun.font.TrueTypeFont Fuite de mémoire?
- 14. Fuite de mémoire AVAudioPlayer
- 15. istream_iterator fuite de mémoire
- 16. Fuite de mémoire SendToAsync?
- 17. gettype() fuite de mémoire
- 18. NSDate fuite de mémoire
- 19. QTcpSocket fuite de mémoire
- 20. Ajax fuite de mémoire
- 21. GluNewQuadric fuite de mémoire
- 22. RenderTargetBitmap fuite de mémoire
- 23. iPhone fuite de mémoire
- 24. Javacard fuite de mémoire.
- 25. Base64EncodedString fuite de mémoire
- 26. javascript fuite de mémoire
- 27. NSDictionary fuite de mémoire
- 28. Fuite de mémoire AVAudioRecorder
- 29. stringWithContentsOfURL fuite de mémoire
- 30. fuite de mémoire tabBarController