Variable soll auch nach Bootup erhältlich sein

S

sem_thesis

Fortgeschrittenes Mitglied
0
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?
 
Speicher es in einer SharedPrefs Datei.
 
Hey!

Erstmals danke für den Hinweis :thumbsup:


Aber - Kannst du dich bitte ein bisschen genauer ausdrücken?
Beispiel vielleicht?
 
SharedPreferences -> siehe SDK Docs.

SharedPreferences öffnen, Variable laden ... *programm läuft* ... Variable schreiben, Programm beendet.
 
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 :(
 
Öhm, du solltest es in der onCreate() lesen und in onStop() schreiben...
 
Aber dann wird es jedesmal in der onStop()-Methode überschrieben (jedesmal, wenn der User zu einer anderen App navigiert).
 
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.
 
  • Danke
Reaktionen: sem_thesis
Ok - danke - hat geklappt :thumbsup:
 
Danke Button drücken?
 
Klar :biggrin:
 

Ähnliche Themen

H
Antworten
2
Aufrufe
1.309
Hcman
H
5
Antworten
22
Aufrufe
1.420
590239
5
Zurück
Oben Unten