- Forum-Beiträge: 3.704
10.10.2016, 08:16:07 via Website
10.10.2016 08:16:07 via Website
Guten morgen liebe Gemeinde ...
ich benötige von euch ein wenig Input, denn trotz intensiver Recherche bin ich zu keiner
zufriedenstellenden Erklärung gekommen.
Gegegeben :
in einem Fragment (v4) initialisiere ich einige Klassen :
Deklaration :
private foo mFoo = null;
private foo1 mFoo1 = null;
private Activity mActivity = null;
Dann nehme ich mir in @OnAttach :
if (context instanceof Activity) mActivity=(Activity) context;
und dann in @OnViewCreated
mFoo = new foo (mActivity);
mFoo.init();
mFoo1 = new foo1 (mActivity);
mFoo1.init();
Später dann in einem Aufruf "process();" (Nach Click)
if (clickIsGood)
mFoo.makeMyDay();
else
mFoo1.whatever();
Bis dahin alles trivial und perfekt !!
Jetzt kommt der Punkt :
lasse ich das Ganze auf einem Device laufen , habe ich keine Probleme.
Manchmal verwende ich jedoch den Emulator , weil der halt fixer nach einer Änderung ist.
Dieser setzt mir allerdings beim ersten Aufruf von "process()" (nach click) der neuen Version
die Variablen mActivitv, mFoo und mFoo1 wieder auf null, OBWOHL zuvor in onViewCreated alles valid ist.
Starte ich ohne Änderung direkt danach nochmal ein Run, dann ein call auf process(), ist alles wieder normal.
Ergo : sobald ich eine veränderte Version an den Emulator schicke, baut er mir den Mist beim ersten Aufruf von
process();
.
Und jetzt der "Static" Punkt :
Deklariere ich allerdings
private static foo mFoo = null;
private static foo1 mFoo1 = null;
private static Activity mActivity = null;
Gibt auch der Emulator plötzlich Ruhe .....
(Allerdings AS mit dem Hinweis : "Do not place context classes in static fields, this is a MemoryLeak and also breaks Instat Run)
Das Ganze gibt mir natürlich aus Stabilitätsgründen ein unsicheres Gefühl , weil man (oder ich) eigentlich nicht
nachvollziehen kann , warum das so ist. (Ich vermeide gerne Try & Hope coding)
Laufe ich hier schlichtweg nur einem Bug im Emulator auf ??
Würdet ihr es riskieren, bei static zu bleiben ? (Memoryleak,GC)
Lieben Dank im Voraus
lg
Stefan
— geändert am 10.10.2016, 11:50:30
Liebe Grüße - Stefan
[ App - Entwicklung ]
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.