Zeit messen in Android

  • 4 Antworten
  • Letztes Antwortdatum
H

HeroUser96

Ambitioniertes Mitglied
2
Hallo zusammen,

ich habe folgende frage:

ich möchte in meinem Projekt nach einer bestimmten Zeitspanne ein Ereigniss auslösen. Ich habe das versucht, indem ich in der onCreate() methode mit
System.nanoTime die "Erstellungs" Zeit gespeichert habe und in einem Thread eine Variable immer mit der aktuellen Zeit überspeichere.

Jetzt habe ich versucht, dass da Ereigniss ausgelöst wird, wenn die aktuelle Zeit = der StartZeit + 10000 ist. Allerdings funktioniert das nicht. Ich habe beim debuggen festgestellt, dass die Zeit "springt", also nie gleich der StartZeit + 10000 ist. Wenn ich das aber zu >= ändere, wird das Ereigniss dann immer ausgeführt und das will ich auch nicht.

Kennt jemand eine bessere Methode?
 
Stichwort: AlarmManager

einfach mal googlen. Da gibts tausende Beispiele.
 
Ist heute Tag der Timer? Der 3. Thread bei dem es im Endeffekt um das gleiche Thema geht.:rolleyes2:

Nimm einen Handler und postDelayed():

Code:
private Handler myHandler = new Handler();

...

// "Timer" stoppen
myHandler.removeCallbacks(myUpdateTimeTask);

// myHandlerTask mit einer Verzögerung von 100ms starten
myHandler.postDelayed(myUpdateTimeTask, 100);

...

// 
private Runnable myHandlerTask = new Runnable() {
   public void run() {
   
   // Hier Methode ausführen, Ereignis auslösen, usw...   

   }

};

und wenn du in die run() am Ende noch mal ein postDelayed(..) rinpackst hast du nen perfekten TimerTask ersatz:

siehe:
Updating the UI from a Timer | Android Developers
 
10000 Nanosekunden?

Dann wohl eher nen Handler nehmen und postDelayed(Runnable r, delayTime) nehmen.
 
Danke, läuft perfekt :D
 

Ähnliche Themen

M
Antworten
21
Aufrufe
1.373
swa00
swa00
Mr-Fisch
Antworten
5
Aufrufe
974
migi01
migi01
Mr-Fisch
Antworten
8
Aufrufe
1.010
Mr-Fisch
Mr-Fisch
M
Antworten
9
Aufrufe
795
mkuz24
M
A
Antworten
5
Aufrufe
698
swa00
swa00
Zurück
Oben Unten