Stopuhr mit currentTimeMillis - Pause Problem

MetBo

MetBo

Erfahrenes Mitglied
4
Hallo,

ich entwickel gerade eine kleine Stopuhr, die in meiner App eingebaut wird.

Damit die Stopuhr wenig CPU Ressourcen zieht, habe ich mich für die Variante mit einem Handler entschlossen (Siehe Updating the UI from a Timer | Android Developers).

Start und Stop beim Timer funktionieren, nur die Pause-Funktion möchte noch nicht ganz :thumbdn::thumbdn:

Mit
Code:
protected OnClickListener mRecordListener = new OnClickListener() {
		@Override
		public void onClick(View arg0) {
			mTimer.removeCallbacks(mUpdateTimerTask);
			
			if (!mIsRecord) {
				if (mStartTime == 0L) {
					mStartTime = System.currentTimeMillis();
				}
				
				mTimer.postDelayed(mUpdateTimerTask, 100);	
			} else {
				mResumeTime = System.currentTimeMillis();
			}
			
			mIsRecord = mIsRecord ? false : true;
		}
	};
wird die Stopuhr gestartet und pausiert.

Das eigentliche "zählen" passiert hier
Code:
protected Runnable mUpdateTimerTask = new Runnable() {
		@Override
		public void run() {
			final long start = mStartTime;
			long millis = 0L;
			
			if (mResumeTime == 0L) {
				millis = System.currentTimeMillis() - start;
			} else {
				millis = System.currentTimeMillis() - (mResumeTime);
			}
			
			int seconds = (int) (millis / 1000);
		    int minutes = seconds / 60;
		    seconds     = seconds % 60;
		
		    if (seconds < 10) {
		        mTextTimer.setText("" + minutes + ":0" + seconds);
		    } else {
			    mTextTimer.setText("" + minutes + ":" + seconds);            
		    }
			
			mTimer.postDelayed(mUpdateTimerTask, 100);
		}
	};

Mein Problem: Wenn ich nach dem Pausieren die Stopuhr weiterlaufen lassen möchte, dann wird komischerweise die Zeit nicht korrekt berechnet ...

Habt ihr eine Idee, wie ich das Pausieren am elegantesten lösen kann?

Vielen Dank
 

Ähnliche Themen

S
Antworten
4
Aufrufe
994
Sempervivum
S
B
Antworten
4
Aufrufe
486
bb321
B
R
Antworten
3
Aufrufe
1.618
Ritartet
R
Zurück
Oben Unten