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

Variable soll auch nach Bootup erhältlich sein

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von sem_thesis, 06.06.2011.

  1. sem_thesis, 06.06.2011 #1
    sem_thesis

    sem_thesis Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    111
    Erhaltene Danke:
    0
    Registriert seit:
    06.03.2011
    Phone:
    Nexus One
    Hallo


    Hatte meine App jetzt fast fertig geschrieben, bis ich einen dummen Fehler entdeckt habe.
    Eine Kleinigkeit, welche die ganze Funktion der App vermasselt :/


    Es geht darum, eine Variable zu definieren, welche die Laufzeit der App speichern soll. Ab dem Punkt der Installation soll Laufzeit die Periode 1 Woche anrechnen.
    Die Variable dient dazu den Terminationsprozess der App aufzurufen.

    Code:
    long Laufzeit = SystemClock.elapsedRealtime() + period;
    Diese Variable wird in der onCreate()-Methode der Hauptklasse deklariert.


    Nun hat das installieren + deklarieren + terminieren der App perfekt funktioniert, bis ich einen Bootup gemacht habe.
    Danach ging das Ganze von vorne los --> neue Laufzeit --> neuer Terminierungszeitpunkt :(


    Gibt es einen Weg diesen Zeitpunkt EINDEUTIG festzulegen, anstatt ihn immer nach Bootup um 1 Woche zu verschieben?
     
  2. the_alien, 06.06.2011 #2
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Speicher es in einer SharedPrefs Datei.
     
  3. sem_thesis, 06.06.2011 #3
    sem_thesis

    sem_thesis Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    111
    Erhaltene Danke:
    0
    Registriert seit:
    06.03.2011
    Phone:
    Nexus One
    Hey!

    Erstmals danke für den Hinweis :thumbsup:


    Aber - Kannst du dich bitte ein bisschen genauer ausdrücken?
    Beispiel vielleicht?
     
  4. the_alien, 06.06.2011 #4
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    SharedPreferences -> siehe SDK Docs.

    SharedPreferences öffnen, Variable laden ... *programm läuft* ... Variable schreiben, Programm beendet.
     
  5. sem_thesis, 06.06.2011 #5
    sem_thesis

    sem_thesis Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    111
    Erhaltene Danke:
    0
    Registriert seit:
    06.03.2011
    Phone:
    Nexus One
    Ok, ich habe hier ein gutes Beispiel gefunden:
    How to use SharedPreferences in Android to store, fetch and edit values - Stack Overflow



    Ich sehe da einen kleinen Haken.
    Der SharedPreferences Wert wird in der onCreate()-Methode geschrieben.
    In der onStart()-Methode wird er gelesen und dementsprechend gehandelt.

    ABER

    Jedesmal wenn der Phone neu startet wird die onCreate()-Methode betreten und der SharedPreferences Wert wird erneut überschrieben.

    Er ist nicht mehr permanent bzw eindeutig :(
     
  6. the_alien, 06.06.2011 #6
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Öhm, du solltest es in der onCreate() lesen und in onStop() schreiben...
     
  7. sem_thesis, 07.06.2011 #7
    sem_thesis

    sem_thesis Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    111
    Erhaltene Danke:
    0
    Registriert seit:
    06.03.2011
    Phone:
    Nexus One
    Aber dann wird es jedesmal in der onStop()-Methode überschrieben (jedesmal, wenn der User zu einer anderen App navigiert).
     
  8. the_alien, 07.06.2011 #8
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Du hast nicht soviel Erfahrung in Programmierung oder?

    Code:
    long meineVariable;
    long timestamp;
    public void onCreate() {
    timestamp = new Date().getTime();
    meineVariable = sharedPrefs.getInt("meineVariable", 0);
    }
    
    public void onStop() {
    meineVariable += new Date().getTime() - timestamp;
    sharedPrefsEditor.putInt("meineVariable", meineVariable);
    }
    Das ist mal eben so ins Unreine aus dem Kopf geschrieben. Keine Gewähr ob die Methodennamen und -signaturen richtig sind.

    Und übrigens wird onStop() aufgerufen wenn die App wirklich aus dem Speicher entfernt wird. Wenn der User zu einer anderen App navigiert wird onPause() aufgerufen.
     
    sem_thesis bedankt sich.
  9. sem_thesis, 07.06.2011 #9
    sem_thesis

    sem_thesis Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    111
    Erhaltene Danke:
    0
    Registriert seit:
    06.03.2011
    Phone:
    Nexus One
    Ok - danke - hat geklappt :thumbsup:
     
  10. the_alien, 07.06.2011 #10
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Danke Button drücken?
     
  11. sem_thesis, 07.06.2011 #11
    sem_thesis

    sem_thesis Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    111
    Erhaltene Danke:
    0
    Registriert seit:
    06.03.2011
    Phone:
    Nexus One
    Klar :biggrin:
     

Diese Seite empfehlen