1. Nimm jetzt an unserem AGM - Gewinnspiel teil - Informationen zum M1, A2 und A8 findest Du hier, hier und hier!
  1. Tom299, 03.02.2012 #1
    Tom299

    Tom299 Threadstarter Android-Experte

    Hallo,

    mir ist gerade kein besserer Titel eingefallen, aber mich würde es mal interessieren, ob Android auch eine statische Klasse beenden (destroyen) kann?

    Bei einer Activity ist es klar, wenn sie im Hintergrund liegt, dann gehts in onPause und evtl. auch in onDestroy (z.B. Speichermangel).

    Ich habe eine statische Klasse, in der ich z.B. den eingeloggten Benutzer vorhalte und noch andere Einstellungen. Diese statische Klasse ist aber keine Activity, sondern einfach ne Standard-Java Klasse (public class). Kann es sein, daß Android auch diese statische Klasse bei Speichermangel beendet oder kann das nicht vorkommen?

    Ein Tester hatte nämlich gestern einen Absturz der Anwendung und ich konnte sehen, daß es beim Zugriff auf eine statische Methode passiert ist. Aber eigentlich sollte dieser Wert immer gefüllt sein. Kann mir deshalb nur erklären, daß die Klasse beendet wurde?


    Gruß,
    Tom
     
  2. TheDarkRose, 03.02.2012 #2
    TheDarkRose

    TheDarkRose Gewerbliches Mitglied

    Wo wird die Klasse referenziert?
     
  3. Kranki, 03.02.2012 #3
    Kranki

    Kranki Ehrenmitglied

    Unter Android hat jede App ihre eigene VM. Ich würde erwarten, dass diese beim Beenden der App ebenfalls komplett beendet wird.
     
  4. Tom299, 03.02.2012 #4
    Tom299

    Tom299 Threadstarter Android-Experte

    Hmm, da alle Methoden und Attribute statisch sind, gibt es auch keinen Konstruktor. Und zugegriffen wird eigentlich von nahezu allen Activities, die ich habe.

    Wäre es sinnvoll, nen Singleton draus zu machen?
     
  5. Tom299, 03.02.2012 #5
    Tom299

    Tom299 Threadstarter Android-Experte

    - java - android singleton vs static methods - Stack Overflow
    - Android : Static variable null on low memory - Stack Overflow

    Sieht dann wohl so aus, als würde genau das bei mir Eintreten, die statischen Werte werden gelöscht / null und später greife ich wieder darauf zu.
    Die Frage ist jetzt, muß ich in JEDER Activity beim onPause meine statischen Werte in den SharedPrefs speichern? Oder gibts nen besseren Ansatz, wo man dies machen könnte / sollte?
     
  6. Kranki, 03.02.2012 #6
    Kranki

    Kranki Ehrenmitglied

    Das kommt jetzt drauf an, was das für Daten sind. Wenn du die rein aus der Klasse heraus ohne weitere Informationen statisch initialisieren kannst dann solltest du das sowieso machen. Dann werden die auch wieder befüllt, wenn die Klasse wieder geladen wird.
    Wenn du Informationen aus der laufenden Activity brauchst, dann musst du die natürlich sichern.
     
  7. Tom299, 03.02.2012 #7
    Tom299

    Tom299 Threadstarter Android-Experte

    Bis auf den eingeloggten User sind alle Daten innerhalb der statischen Klasse initialisiert, die sind auch kein Problem. Nur beim User knallts ;-)

    Bin jetzt auch dran, den Benutzer in den SharedPrefs zu speichern. Problem ist aber, daß mir der Context in der statischen Klasse fehlt. Ohne Context komm ich nicht auf die SharedPrefs. Ich möchte aber, daß die statische Klasse selbst den User aus den SharedPrefs lesen kann und nicht über eine Activity mittels Context ... Dafür hab ich momentan noch keine Lösung gefunden, vielleicht fällt mir ja noch was ein ...