想要停止增加毫秒

时间:2015-09-01 10:19:07

标签: java android time milliseconds

我正在尝试创建一个计时器应用,但我有这个问题,毫秒。

当某人激活计时器时,我会保存当前的毫秒数,然后我只是为了得到它们之间的区别

long startMillisecond; long i = System.currentMillisecond() - startMillisecond

然后我用其他代码显示这个变量i。但是当我暂停我的程序时,我的变量i保持正确的值,但是当我再次启动程序时,我得到了错误的#34;自System.currentMillisecond()以来的值不断增加(内部),因此它看起来像是"跳跃"几秒钟

示例:启动应用>变量i = System.currentMillisecond() - startMillisecond等于0.现在,如果我暂停5秒然后恢复变量i,则值为5.

任何人都知道当我paus时我怎么能让它具有相同的价值?

修改。这是我的运行功能代码

String tempstring;

int millisec,sec,min,hour;

Handler handler;
Runnable runnable;

SensorManager mSensor;
Sensor accSensor;

Button startButton,stopButton,resetButton;
TextView whiteplayertime,blackplayertime,xt,yt,zt;

public void StartTimer(View view){
    mSensor.registerListener(this, accSensor, SensorManager.SENSOR_DELAY_NORMAL);
    handler = new Handler();
    runnable = new Runnable() {
        @Override
        public void run() {

           if(startmillisec <= 0){
                startmillisec = System.currentTimeMillis();
            }        
            tempmillisec = System.currentTimeMillis() - startmillisec;

            millisec = tempmillisec;
            millisec /= 100;
            millisec = millisec % 10;
            sec = TU.MILLISECONDS.toSeconds(tempmillisec);
            sec = sec % 60;
            min = TU.MILLISECONDS.toMinutes(tempmillisec);
            min = min % 60;
            hour = TU.MILLISECONDS.toHours(tempmillisec);
            hour = hour % 24;
            tempstring = String.format("%02d:%02d:%02d:%d",hour,min,sec,millisec);
            whiteplayertime.setText(tempstring);
            handler.post(this); //This is the last in the code
        }
    };
    handler.post(runnable);

3 个答案:

答案 0 :(得分:1)

从最后一个停止值开始经过简单保存,如果计时器正在进行,则保存在变量中。

public MyTimer {
    private long startTime;
    private long elapsed;
    private boolean running;

    public void start() {
        startTime = System.currentTimemillis();
        running = true;
    }

    public void stop() {
        elapsed = elapsed + System.currentTimemillis() - startTime; 
        running = false;   
    }

    public long getElapsed() {
        if (running) {
            return elapsed + System.currentTimemillis() - startTime;
        } else {
            return elapsed;
        }
    }
}

答案 1 :(得分:1)

您需要跟踪暂停时间。暂停,暂停

long pauseTime=System.currentMillisecond()

并取消暂停

long timeInPause = System.currentMillisecond()-pauseTime

然后

i= System.currentMillisecond() - startMillisecond - timeInPause

答案 2 :(得分:0)

创建3个字段。 StartPause暂停开始时暂停MS的时间。 EndPause暂停停止时MS中的时间。 TotalPause总暂停时间。

每次用户暂停并继续将差异添加到总暂停时间。从您的总时间中减去