Jetzt kostenlos registrieren. Mitglieder surfen ohne Werbung auf Android-Hilfe.de!
Zurück   Android-Hilfe.de > Android Developer > Android App Entwicklung

Probleme mit Timer

Das Thema "Probleme mit Timer" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.


Antwort

 

Themen-Optionen Ansicht
Alt 19.09.2011, 11:12   #1 (permalink)
Android-Hilfe.de Mitglied
 
Benutzerbild von Fonsi

Modell: Samsung Galaxy S2, Sony Ericsson Xperia ray

Registriert seit: 08.07.2011
Beiträge: 175
Abgegebene Danke: 2
Erhielt 18 Danke für 17 Beiträge
Standard Probleme mit Timer

Hi Leute,

ich will mit Hilfe dieses Tutorials: Updating the UI from a Timer | Android Developers
einen Timer in meine App integrieren. Der Timer soll bei "00:00" anfangen die Sekunden zu zählen. Ich hab nen Button, der den Timer startet, allerdings zeigt mein TextView im Emulator dann dauerhaft "-214134234:0-30" an.

In der Runnable-Prozedur aus dem Tutorial hab ich eigentlich nur die Ausgabe (lblTimer) geändert:

Code:
private Runnable mUpdateTimeTask = new Runnable() {
           public void run() {
               final long start = mStartTime;
               long millis = SystemClock.uptimeMillis() - start;
               int seconds = (int) (millis / 1000);
               int minutes = seconds / 60;
               seconds     = seconds % 60;

               if (seconds < 10) {
                   lblTimer.setText("" + minutes + ":0" + seconds);
               } else {
                   lblTimer.setText("" + minutes + ":" + seconds);            
               }
             
               mHandler.postAtTime(this,
                       start + (((minutes * 60) + seconds + 1) * 1000));
           }
        };
Aufgerufen wird die Prozedur durch den OnClickListener:
Code:
    private OnClickListener mStartListener = new OnClickListener() {
           public void onClick(View v) {
               if (mStartTime == 0L) {
                    mStartTime = System.currentTimeMillis();
                    mHandler.removeCallbacks(mUpdateTimeTask);
                    mHandler.postDelayed(mUpdateTimeTask, 100);
               }
           }
        };
Habt ihr Tipps oder Ideen, warum der Timer nicht läuft bzw. falsche Werte liefert?

Geändert von Fonsi (19.09.2011 um 11:47 Uhr)
Fonsi ist offline   Mit Zitat antworten
Alt 19.09.2011, 12:02   #2 (permalink)
Fortgeschrittenes Mitglied

Modell: HTC Desire HD

Registriert seit: 09.08.2010
Beiträge: 345
Abgegebene Danke: 11
Erhielt 40 Danke für 38 Beiträge
Standard AW: Probleme mit Timer

UI aktualisieren lassen!

Muss im UI Thread passieren, deswegen einen Handler verwenden.

invalidate() der Activity aufrufen
Unicate ist offline   Mit Zitat antworten
Alt 19.09.2011, 12:31   #3 (permalink)
Android-Hilfe.de Mitglied

Modell: Motorola Atrix 4G

Registriert seit: 07.12.2010
Beiträge: 170
Abgegebene Danke: 14
Erhielt 32 Danke für 31 Beiträge
Neeldarax eine Nachricht über ICQ schicken
Standard AW: Probleme mit Timer

Hallo Fonsi,

und das zweite Problem sind deine negativen Zahlen.


Zitat:
System.currentTimeMillis() is the standard "wall" clock (time and date) expressing milliseconds since the epoch.
Zitat:
uptimeMillis() is counted in milliseconds since the system was booted.
Du weichst vom Beispiel ab. Wenn du eine einfache Start-Stop-Uhr machen willst, dann musst du bei einer Methode bleiben, die dir die aktuelle Zeit gibt.

Weiter als negativen Zahlen und invalidate habe ich nicht geguckt. Probier das aus, wenn noch Unklarheiten aufkommen...

regards


Quelle der Zitaten: http://developer.android.com/referen...stemClock.html
__________________
g o o g l e+ plus.neeldarax.de
androidblog www.neeldarax.de
Neeldarax ist offline   Mit Zitat antworten
Alt 19.09.2011, 13:03   #4 (permalink)
Android-Hilfe.de Mitglied
 
Benutzerbild von Fonsi

Modell: Samsung Galaxy S2, Sony Ericsson Xperia ray

Registriert seit: 08.07.2011
Beiträge: 175
Abgegebene Danke: 2
Erhielt 18 Danke für 17 Beiträge
Standard AW: Probleme mit Timer

Zitat:
Zitat von Unicate Beitrag anzeigen
UI aktualisieren lassen!

Muss im UI Thread passieren, deswegen einen Handler verwenden.

invalidate() der Activity aufrufen
Wo rufe ich das invalidate() denn dann genau auf? In der Runnable-Prozedur gehts ja nicht, weil das kein UI-Thread ist.

Geändert von Fonsi (19.09.2011 um 13:24 Uhr)
Fonsi ist offline   Mit Zitat antworten
Alt 19.09.2011, 13:28   #5 (permalink)
Fortgeschrittenes Mitglied

Modell: HTC Desire HD

Registriert seit: 09.08.2010
Beiträge: 345
Abgegebene Danke: 11
Erhielt 40 Danke für 38 Beiträge
Standard AW: Probleme mit Timer

Als Member anlegen:
PHP-Code:
    private Handler notifyHandler = new Handler() 
    { 
        @
Override 
        
public void handleMessage(Message msg) { 
            
nameDeinerView.invalidate();
        }
    }; 
Und dann im Thread sowas hier aufrufen wenn aktualisiert werden soll:

PHP-Code:
notifyHandler.sendEmptyMessage(0
Ist natürlich stark vereinfacht, hier sollte man evtl. noch im handler abfragen was in msg.what drin steht und ggf. switchen

Geändert von Unicate (19.09.2011 um 14:31 Uhr)
Unicate ist offline   Mit Zitat antworten
Alt 19.09.2011, 14:21   #6 (permalink)
Android-Hilfe.de Mitglied
 
Benutzerbild von Fonsi

Modell: Samsung Galaxy S2, Sony Ericsson Xperia ray

Registriert seit: 08.07.2011
Beiträge: 175
Abgegebene Danke: 2
Erhielt 18 Danke für 17 Beiträge
Standard AW: Probleme mit Timer

Danke, das hab ich jetzt mal hinzugefügt. Allerdings scheint es
Code:
CounterActivity.this.invalidate();
nicht zu geben. Muss hier das TextView rein oder die gesamte Activity? Die Activity heißt CounterActivity.


Was ich auch noch nicht so ganz verstehe aus dem Beispiel ist das hier:
Code:
mHandler.postAtTime(this,start + (((minutes * 60) + seconds + 1) * 1000));
.

Beim Zähler soll die Prozedur doch jede Sekunde aufgerufen werden. Wenn ich aber
Code:
mHandler.postAtTime(this,1000));
aufrufe, hängt sich die Anwendung auf.
Fonsi ist offline   Mit Zitat antworten
Alt 19.09.2011, 14:29   #7 (permalink)
Fortgeschrittenes Mitglied

Modell: HTC Desire HD

Registriert seit: 09.08.2010
Beiträge: 345
Abgegebene Danke: 11
Erhielt 40 Danke für 38 Beiträge
Standard AW: Probleme mit Timer

Tschuldige natürlich muss da die View rein und nicht die ganze Activity
Unicate ist offline   Mit Zitat antworten
Alt 19.09.2011, 22:15   #8 (permalink)
Android-Hilfe.de Mitglied
 
Benutzerbild von Fonsi

Modell: Samsung Galaxy S2, Sony Ericsson Xperia ray

Registriert seit: 08.07.2011
Beiträge: 175
Abgegebene Danke: 2
Erhielt 18 Danke für 17 Beiträge
Standard AW: Probleme mit Timer

Shame on me! Ich hab ganze 6 Stunden gebraucht, um herauszufinden, dass es für mein Vorhaben das Chronometer gibt . Man sollte sich vor der Entwicklung der ersten App die Controls genauer anschauen

Trotzdem danke an alle, die geholfen haben! Es läuft nun
Fonsi ist offline   Mit Zitat antworten
Antwort

Stichworte
-

Themen-Optionen
Ansicht


Ähnliche Themen

Thema Autor Forum Antworten Letzter Beitrag
Probleme,probleme,probleme (mit Handy und mit Kies) Mimi1406 Samsung Galaxy 3 (I5800) Forum 8 28.08.2011 11:10
Timer Blackout4 Tools 2 02.08.2011 17:25
Prepaid Timer r-zwo_d-zwo Tools 0 30.05.2011 08:55
Timer mit Datum einstellbar? gillan Dell Streak 5 Forum 10 08.01.2011 14:42
Music Sleep Funktion (Sleep Timer oder Standby Timer) mstyle83 Tools 2 30.06.2009 19:58




Du liest gerade: "Probleme mit Timer" unter "Android App Entwicklung" auf Android-Hilfe.de.


Powered by vBulletin®
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
© Android-Hilfe.de 2012 - All rights reserved.