1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Kann eine statische Klasse von Android beendet werden?

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Tom299, 03.02.2012.

  1. Tom299, 03.02.2012 #1
    Tom299

    Tom299 Threadstarter Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    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

    Beiträge:
    1,292
    Erhaltene Danke:
    136
    Registriert seit:
    20.08.2010
    Wo wird die Klasse referenziert?
     
  3. Kranki, 03.02.2012 #3
    Kranki

    Kranki Ehrenmitglied

    Beiträge:
    3,831
    Erhaltene Danke:
    814
    Registriert seit:
    19.07.2009
    Tablet:
    Samsung Galaxy Tab 3 7.0 Lite
    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

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    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

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    - 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

    Beiträge:
    3,831
    Erhaltene Danke:
    814
    Registriert seit:
    19.07.2009
    Tablet:
    Samsung Galaxy Tab 3 7.0 Lite
    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

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    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 ...
     

Diese Seite empfehlen