运行计时器的时间延迟

问题描述 投票:0回答:1

我是一个Android应用程序,其中包括计时器,我使用了计时器。....

[现在有一种情况,在每10秒之后,我使用的计时器handler.postdelyed()应该改变1秒,但是在这种情况下,计时器在10秒后开始运行,但是计时器从10秒开始而不是1秒。有什么方法可以让我延迟计时吗?

这是我的代码:

chronometer_life_gained.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
    @Override
    public void onChronometerTick(final Chronometer chronometer) {
        long delay = (206 / Long.parseLong(joint_per_day))*1000;
        System.out.println("delayer " + delay);
        final Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
        if ((SystemClock.elapsedRealtime() - chronometer.getBase()) < 60000) {
            long dy = TimeUnit.MILLISECONDS.toDays(SystemClock.elapsedRealtime() - chronometer.getBase());
            final long hr = TimeUnit.MILLISECONDS.toHours(SystemClock.elapsedRealtime() - chronometer.getBase())
                    - TimeUnit.DAYS.toHours(TimeUnit.MILLISECONDS.toDays(SystemClock.elapsedRealtime() - chronometer.getBase()));
            final long min = TimeUnit.MILLISECONDS.toMinutes(SystemClock.elapsedRealtime() - chronometer.getBase())
                    - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(SystemClock.elapsedRealtime() - chronometer.getBase()));
            final long sec = TimeUnit.MILLISECONDS.toSeconds(SystemClock.elapsedRealtime() - chronometer.getBase())
                    - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(SystemClock.elapsedRealtime() - chronometer.getBase()));

            year_num_life_gained.setVisibility(View.GONE);
            year_text_life_gained.setVisibility(View.GONE);
            month_num_life_gained.setVisibility(View.GONE);
            month_text_life_gained.setVisibility(View.GONE);
            day_num_life_gained.setVisibility(View.GONE);
            day_text_life_gained.setVisibility(View.GONE);
            hour_num_life_gained.setVisibility(View.GONE);
            hour_text_life_gained.setVisibility(View.GONE);
            min_num_life_gained.setVisibility(View.GONE);
            min_text_life_gained.setVisibility(View.GONE);
            sec_num_life_gained.setVisibility(View.VISIBLE);
            sec_text_life_gained.setVisibility(View.VISIBLE);
            RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);

            params.addRule(RelativeLayout.CENTER_VERTICAL);
            params.addRule(RelativeLayout.ALIGN_PARENT_START);
            sec_num_life_gained.setLayoutParams(params);

            sec_num_life_gained.setText(Long.toString(sec));


        }
//
            }
        }, delay);

//    }

    }
});

提前感谢

android countdown chronometer
1个回答
0
投票

您可以用CountDownTimer实现它,尽管它的名称是倒数计时器,但我们可以使其递增计数。

final long startTime = System.currentTimeMillis();
// If you want to count until 60 seconds, put VALUE_IN_MILLIS_UNTIL_YOU_WANT_TO_COUNT_UP = 60000 (in milliseconds)
elapsedTimer = new CountDownTimer(VALUE_IN_MILLIS_UNTIL_YOU_WANT_TO_COUNT_UP, 1000) {
    @Override
    public void onTick(long l) {
        long elapsedTime = System.currentTimeMillis() - startTime;
        elapsedTime = elapsedTime/1000;
        // Add your logic here
    }
}.start();
© www.soinside.com 2019 - 2024. All rights reserved.