Android Chronometer 恢复功能

2024-06-13

我尝试使用 Chronometer 在我的 Android 应用程序中创建一个恢复按钮。到目前为止,我有简历方法的代码片段:

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 恢复计数。

我希望它再次从 00:05 开始,而不是 00:15,因为它是一个“恢复”功能。

我很高兴你能提供帮助。谢谢。


有点太晚了,但可能对其他人有帮助。我认为这就是您问题的解决方案。

启动/恢复计时器:

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();
}

你需要记住最后一次计时器停止时间.

在恢复时,您计算上次停止时间和新开始时间之间花费的时间。当你有这个间隔时,你只需将间隔添加到您的天文钟基准时间中(您“移动”原始开始时间)。

希望这可以帮助 ;)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android Chronometer 恢复功能 的相关文章

随机推荐