【问题标题】:Do something every X time with a cronometer每 X 次用天文钟做某事
【发布时间】:2013-09-06 10:53:29
【问题描述】:

我很菜鸟 我有一个计时器,当我点击一个按钮时会开始计时

    crono = (Chronometer) findViewById(R.id.crono);
begin= (Button) findViewById(R.id.begin);
begin.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View arg0) {

        crono.setBase(SystemClock.elapsedRealtime());
        crono.start();

every minute do something ////////

    }
});

每分钟我应该做什么来做某事? 例如 1:00 ---> 做某事 2:00 ---> 做某事

我们将不胜感激任何建议。 :)

【问题讨论】:

    标签: android time timer


    【解决方案1】:

    尝试使用OnChronometerTickListener

    @Override
    public void onClick(View arg0) {
        crono.setBase(SystemClock.elapsedRealtime());
        crono.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
            private long mTicks = 0;
            public void onChronometerTick(Chronometer chronometer) {
                if ((mTicks / 60) == 0) { // adapt period here
                    // do something
                }
                mTicks++;
            }
        });
        crono.start();
    }
    

    我不确定,Cronometer 滴答作响的频率,我猜是每秒。如果是其他原因,您可能需要调整这个时期。

    如果不是恒定周期,则需要检查时间,如:

    @Override
    public void onClick(View arg0) {
        crono.setBase(SystemClock.elapsedRealtime());
        crono.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
            private long mLastAction = 0;
            public void onChronometerTick(Chronometer chronometer) {
                now = System.getCurrentMillies();
                if (now - mLastAction > 60 * 1000) {
                    // do something
                    mLastAction = now;
                }
            }
        });
        crono.start();
    }
    

    也许,第二个更好。

    【讨论】:

    • 嗨,第一个代码用红色下划线“` Chronometer.OnChronometerTickListener()”`和" onChronometerTick"
    • 我只是修复了琐碎的语法。方法的返回类型丢失。也许,您需要导入 Chronometer。请检查您的 IDE 错误消息。
    • 我已经阅读了有关 Chronometer.OnChronometerTickListener() 的信息,并使用我在 Stackoverflow 中找到的代码做了一些优势。我已经用我的新代码编辑了你的答案,请检查一下,我应该如何处理 if (myElapsedMillis > 2) 使其每 10 秒工作一次?
    • 现在没关系,我认为一切都运行良好,它每秒“更新”,但它很好。解决了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    相关资源
    最近更新 更多