Android Chronometer恢复功能 [英] Android Chronometer resume function

查看:177
本文介绍了Android Chronometer恢复功能的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图使用Chronometer在Android应用中创建恢复按钮.到目前为止,我对简历方法有以下代码段:

I mm trying to create a resume button in my Android app using Chronometer. So far I have this code snippet for the resume method:

private long pauseResume() {

    long timeWhenStopped = chronometer.getBase() - SystemClock.elapsedRealtime();

    return timeWhenStopped;

}

这是恢复按钮的代码:

 public void onClick(View v) {
      switch(v.getId()) {

          ...

          case R.id.resume_button:                
              chronometer.setBase(SystemClock.elapsedRealtime() + pauseResume());
              chronometer.start();    
              break;

      }
}

问题:例如,当我在00:05暂停计时器,然后在10秒后按下恢复按钮时,计时器将在00:15继续计数.

THE PROBLEM: Example, when I pause the timer at 00:05 and then I press the resume button 10 seconds later, the timer will resume counting at 00:15.

我希望它再次从00:05开始,而不是从00:15开始,因为它是一种恢复"功能.

I want it to start at 00:05 again, not 00:15, because as it is a "resume" function.

很高兴您能提供帮助.谢谢.

I am very glad you could help. Thanks.

推荐答案

为时已晚,但可能会对其他人有所帮助.我认为这是解决您问题的方法.

A little bit too late but it might help others. I think this is the solution to your problem.

启动/恢复天文钟:

private void chronoStart()
{
    // on first start
    if ( mLastStopTime == 0 )
        mChronometer.setBase( SystemClock.elapsedRealtime() );
    // on resume after pause
    else
    {
        long intervalOnPause = (SystemClock.elapsedRealtime() - mLastStopTime);
        mChronometer.setBase( mChronometer.getBase() + intervalOnPause );
    }

    mChronometer.start();
}

暂停计时器:

private void chronoPause()
{
    mChronometer.stop();

    mLastStopTime = SystemClock.elapsedRealtime();
}

您需要记住上一个计时器停止时间.

在恢复时,您可以计算从上次停止时间到新的开始时间所花费的时间.有了这个间隔后,您只需将间隔添加到天文钟的基本时间(您可以移动"原始开始时间).

On resume, you calculate how long it took between the last stop time and the new start time. When you have this interval you just add the interval to your chronometer base time (you "move" original start time).

希望这会有所帮助;)

这篇关于Android Chronometer恢复功能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆