Static Views in Fragment (Memory Leaks)

  • Antworten:5
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 52

05.02.2015, 16:17:40 via Website

Hallo Leute,

meine Frage bezieht sich auf Memory Leaks.

Ich benutze in meiner App einen SectionsPagerAdapter in dem sich zwei Fragment befinden.
In jedem Fragment befindet sich nun ein FrameLayout, wobei die Height in jedem dieser Fragmente mit 100dp definiert worden ist.

Wenn ich von Fragment1 auf Fragment2 "swipe" wird mittels Animation die Height auf 200dp erhöht. Nun soll wiederum die Height in Fragment1 auch auf 200dp erhöht werden, damit bei einem Wechsel wieder mittels Animation auf 100dp gewechselt werden kann.

Um dieses Problem zu lösen, habe ich einfach die beiden FrameLayouts static definiert. So kann man einfach mittels

Fragment1.frameLayout.getLayoutParams().height = (int) pxFromDp(x);

die Height ändern. Static Views sind ja normalerweise verpönt, da die statischen Views trotz eines Activity.finish() im Heap gelagert werden.

Kann es nun bei Fragmente auch zu Memory Leaks kommen? Falls meine MainActivity beendet wird, existieren die Fragmente ja sowieso nicht mehr?

Wäre es trotzdem eine bessere Lösung, die Heights mittels Callback Methoden zu ändern?

Gibt es eine mir noch unbekannte bessere Lösung?

LG und schon mal vielen Dank im Voraus ,

Julian

Antworten
  • Forum-Beiträge: 1.904

05.02.2015, 16:39:18 via App

Ich benutze static nicht gerne, da die Variablen für mich irgendwie so entkoppelt von dem Programmablauf sind und deswegen Unordnung entsteht.
Daher würde ich callbacks nehmen.

— geändert am 05.02.2015, 16:42:21

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten
  • Forum-Beiträge: 52

05.02.2015, 16:51:54 via Website

Schonmal danke für deine Antwort, aber mich würde eher der Hintergrund, bezogen auf Memory Leaks, interessieren.

LG J

Antworten
  • Forum-Beiträge: 1.904

05.02.2015, 18:00:26 via Website

http://stackoverflow.com/a/11908685

Statische Variablen werden nicht vom GC aufgeräumt. So bleiben alle statischen Objekte und deren "Unter-Objekte" erhalten, bis die Klasse vom Loader unloaded wird, was glaube ich beim "Beenden erzwingen" und bei RAM-Mangel passiert.

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten
  • Forum-Beiträge: 52

05.02.2015, 18:04:32 via Website

Und genau das ist bei mir nicht der Fall, denke ich zumindest. Denn wenn die MainActivity, in welcher die Fragmente geladen werden, beendet wird, existiert im Prinzip die ganze App nichtmehr. Also würde ich somit keine Leaks bekommen?

Jedoch werde ich trotzdem zu Callbacks wechseln.

Antworten
  • Forum-Beiträge: 1.904

05.02.2015, 20:57:49 via App

So heftig gut kenne ich mich da nicht aus. Vielleicht passiert irgendein Shit bei nem Orietationchange...

Mit Interfaces ist das aber sicherlich gut.

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten

Empfohlene Artikel