计时器不会停在android中

Siv*_*a K 5 android timer chronometer

在我的应用程序中,我想显示一个停止计时器手表.当我通过Google搜索时,我在开发者网站上找到了一个名为Chronometer的选项.它看起来就像一个停止计时器手表.

当我单击开始按钮时,我希望计时器开始,当我单击暂停按钮时,必须暂停计时器,一旦我点击开始它必须从它停止的时间开始.

但是在这个天文台里它从0开始,当我在1分10秒点击暂停时它会暂停.当我再次点击再次启动5分钟后,计时器从6分钟开始计时10秒,即使暂停计时器正在运行,如何停止计时并在停止时恢复计时.

以下是我的天文台代码

Start = (Button)findViewById(R.id.widget306);
        Start.setOnClickListener(new View.OnClickListener() 
        {   
            @Override
            public void onClick(View v) 
            {
                chronometer.start();                
            }
        });

        Stop = (Button)findViewById(R.id.widget307);
        Stop.setOnClickListener(new View.OnClickListener() 
        {   
            @Override
            public void onClick(View v) 
            {
                  chronometer.stop();
            }
        });
    }
Run Code Online (Sandbox Code Playgroud)

rea*_*jin 24

对不起,但我自己找到了一个解决方案,看起来更简单:

  1. 在您的活动中,声明一个成员变量(例如lastPause)来记录上次暂停的时间:

    private long lastPause;

  2. 启动你的计时器(假设你的计时器的变量是crono):

    crono.setBase(SystemClock.elapsedRealtime());

    crono.start();

  3. 每次使用时暂停您的计时器:

    lastPause = SystemClock.elapsedRealtime();

    crono.stop();

  4. 每次使用时恢复您的计时器:

    crono.setBase(crono.getBase() + SystemClock.elapsedRealtime() - lastPause);

    crono.start();

我没有精确测试精度,因为我的眼睛似乎没问题:]


cch*_*son 2

来自天文台文档

别再算了。这不会影响从 setBase(long) 设置的基数,只会影响视图显示。

我现在没有任何 Android 开发环境,所以无法对其进行更多调查:(

编辑: 这是您的代码所基于的代码吗?似乎setBase在停止时使用当前时间