2010-12-31 6 views
11

Diese Frage mit den Antworten auf die folgende Frage verbunden:Drawable Vorteil gegenüber Bitmap für den Speicher in android

Error removing Bitmaps[Android]

Gibt es einen Vorteil in Bezug auf Speicher de-Zuordnung in Android Drawable über Bitmap mit ?

Ich schaute Romain Guy Projekt Shelves und er verwendet SoftReference für Bilder Caches, aber ich bin nicht in der Lage zu suchen, wo ist der Code, der diese Drawables, wenn SoftReference automatisch den Speicher für Bitmap zurücklöst. Soweit ich weiß, muss .recycle() explizit auf dem Bitmap aufgerufen werden, damit es rückgängig gemacht werden kann.

Antwort

10

In meinem Verständnis sind Bitmaps normalerweise besser für die Leistung, wenn Sie nicht viel Bildbearbeitung machen müssen. Ich habe jedoch Speicherlecks gefunden, wenn ich sie nicht manuell recycle. Meine Lösung war write a class, um mir zu helfen, meine Bilder zu verwalten, die eine einfache Möglichkeit bietet, alle meine Bitmaps an bestimmten Punkten in meiner Anwendung zu recyceln. Es bietet auch eine einfache Möglichkeit, bereits geladene Ressourcen (einschließlich Drawables) wiederzuverwenden.

9

Sie müssen Bitmap.reycle() nicht aufrufen. Dies wird für Sie in seinem Finalizer getan werden. Wenn Sie dies im Finalizer tun, bedeutet dies, dass die Zuweisung verzögert wird, bis Finalizer ausgeführt werden. Wenn möglich, kann recycle() direkt mit der Speicherverwaltung helfen.

+1

Nein .recycle() muss aufgerufen werden, ich sah Romain Guy kommentieren hier irgendwo auf Stackoverflow sagen zu tun, wie Bitmaps nativ zugeordnet sind und wenn das nicht getan wird, ist es ein Speicherleck – 2cupsOfTech

+8

Sie möchten vielleicht einen Benutzer überprüfen Profil, bevor Sie sie falsch nennen. –

+3

@AustynMahoney Experten können auch falsch liegen. Nehmen Sie den Rat eines Experten, aber folgen Sie ihm nicht religiös. "Überprüfen eines Benutzerprofils" ist viel weniger wichtig als Beweis. Keine Beweise oder Links wurden von niemandem zur Verfügung gestellt. Wie auch immer, gute Antwort von hackbod. – user1132959

0

Acc. zu this page, beginnend mit API Level 11, werden die Bitmap-Pixeldaten zusammen mit der zugehörigen Bitmap im Dalvik-Heap gespeichert. Daher ist das Aufrufen von .recycle eigentlich nicht erforderlich, es sei denn, Sie möchten den Speicher manuell für die weitere Verwendung freigeben. Stellen Sie sicher, dass Sie die Bitmap ebenfalls deaktivieren, nur als zusätzliche Maßnahme.

PS: Dies war der Link, der hackbod 's Antwort erklärt.