Android Chronometer恢复功能
作者:互联网
我正在尝试使用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();
}
你需要记住最后的计时器停止时间.
在恢复时,您可以计算上次停止时间与新开始时间之间的时间.当你有这个间隔时,你只需将时间间隔添加到你的计时器基准时间(你“移动”原始开始时间).
希望这可以帮助
标签:chronometer,android 来源: https://codeday.me/bug/20190725/1532870.html