Wie kann ich die Bitmaps einer SurfaceView in einem Fragment aus den "recycelt Status" zurückholen?

  • Antworten:2
Mathias Wittig
  • Forum-Beiträge: 24

06.12.2015, 19:44:56 via Website

Hallo alle zusammen,

Ich hoffe die Überschrift trifft den Kern meiner Frage (kann sie nicht besser formulieren :))

ich habe eine SurfaceView in einem Fragment. Wenn ich auf der SurfaceView (mit einigen Bitmaps) auf eine bestimmte Stelle drücke, komme ich zum nächsten Fragment (mit replace(), nicht mit add()). Soweit funktioniert alles.

Will ich aber durch die Zurücktaste zurück, werden mir die Bitmaps nicht mehr angezeigt. Tippe ich dann auf den Bildschirm, crasht die App und am PC am Android Monitor steht das Bitmap wurde recycelt und kann deswegen nicht an angeklickt werden (mit OnTouch()).

Wie kann ich das recycelte Bitmap "zurückholen"?
Muss ich da ein Bitmap in n Arbeitsspeicher holen/ speichern o ä. ?

Bin Dankbar für jeden Tipp. Kann auch Code liefern, wenn das jemanden hilft.

Danke im Vorrraus !

— geändert am 06.12.2015, 19:47:43

Antworten
Nathan Neomind
  • Forum-Beiträge: 8

06.12.2015, 22:29:50 via Website

Das Bitmap muss komplett neu geladen werden, falls es recycelt wurde.
Mit Android 2.x sollten selbst erstellte Bitmaps ohnehin IMMER recycelt werden um OutOfMemory Exceptions zu vermeiden.

Eine einfache Lösung könnte es sein ein Drawable zu benutzen, das beim Zeichnen überprüft ob das Bitmap gültig ist, und es bei Bedarf neu erstellt.

Peace out

Mathias Wittig

Antworten
Mathias Wittig
  • Forum-Beiträge: 24

07.12.2015, 22:36:29 via Website

Danke. Hab das decodieren der Bitmaps jetzt auch gleich in der View erledigt. Jetzt dauerts zwar kurz (200ms) wenn die View erzeugt wird, aber es funktioniert !!!

Antworten