Runnable als Timer -> Problem

  • Antworten:2
Robin E.
  • Forum-Beiträge: 227

21.10.2012, 16:20:22 via Website

Also ich brauche für meine App einen Timer, der möglichst auf eine Millisekunde genau sein sollte und jede Sekunde ein Label aktualisieren soll. Ich hab mich ein bisschen belesen und hab mich für eine Runnable entschieden.

1Handler mHandler = new Handler();
2TextView v = (TextView) findViewById(R.id.xxx);
3long time = 0;
4
5final Runnable r = new Runnable()
6 {
7 long seconds = 0;
8 long minutes = 0;
9
10 public void run()
11 {
12 time+=1;
13 seconds = time / 1000;
14 minutes = seconds / 60;
15
16 if (minutes < 10){
17 if (seconds <10){
18 v.setText("0" + minutes + ":0" + seconds);
19 }
20 else{
21 v.setText("0" + minutes + ":" + seconds);
22 }
23 }
24 else{
25 if (seconds <10){
26 v.setText(minutes + ":0" + seconds);
27 }
28 else{
29 v.setText(minutes + ":" + seconds);
30 }
31 }
32 mHandler.postDelayed(this, 1);
33 }
34 };
Funktionieren tut es an sich auch, leider stimmen aber die Zeiten nicht. Ich hab schon diverse Varianten durch, aber eine Sekunde in meinem Programm war nie auch nur annährend eine reale Sekunde.

Gibt es denn einen besseren Weg, um einen vernünftig zählenden Timer zu implementieren? Oder muss ich irgendwas anders machen?

Danke schonmal für eure Tipps!

Antworten
Felice M.
  • Forum-Beiträge: 53

21.10.2012, 20:58:07 via App

probiers mal mit System.getcurrentMilis
und berrechne die Zeit einfach immer neu

Antworten