I have two Chronometer in activity. The first chronometer is for the elapsed time, and the second chronometer is for the time interval.
Example: -
We selected 5 minutes elapsed time and an interval of 30 seconds, now we start both timers simultaneously by pressing btn_start. Both timers start at 0, now that the interval timer reaches 00:30, it restarts from 0 again.
Now the problem: -
Since I cross-checked, both timers start with a millisecond difference. Which later becomes the difference of 1 second, 2 seconds, 3 seconds or more seconds.
The following is a custom timepiece. Java
public class PausableChronometer extends Chronometer implements PlaybackStateView {
private long timeWhenStopped = 0;
public PausableChronometer(Context context) {
super(context);
}
public PausableChronometer(Context context, AttributeSet attrs) {
super(context, attrs);
}
public PausableChronometer(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public void start() {
setBase(SystemClock.elapsedRealtime() + timeWhenStopped);
Log.e("start()", String.valueOf(SystemClock.elapsedRealtime() + timeWhenStopped));
super.start();
}
@Override
public void stop() {
super.stop();
timeWhenStopped = getBase() - SystemClock.elapsedRealtime();
}
@Override
public void restart() {
reset();
start();
}
public void reset() {
stop();
setBase(SystemClock.elapsedRealtime());
timeWhenStopped = 0;
}
@Override
public void resume() {
setBase(SystemClock.elapsedRealtime() - timeWhenStopped);
start();
}
@Override
public void pause() {
stop();
timeWhenStopped = SystemClock.elapsedRealtime() - getBase();
}
}
On Clicked button I do the following:
private void startTimer() {
intervalTimer.start();
elapsedTimer.start();
}
, , ?