【问题标题】:Restart Runnable Variables Android重新启动可运行变量 Android
【发布时间】:2016-06-16 23:45:25
【问题描述】:

我想做一些我不确定可以做的事情,到目前为止我还没有找到任何好的答案来回答我的问题。

这是我的情况:
- 我已将Timer 实现为Handler,其中Runnable 每1 秒调用一次。
- 我现在需要实现像Timer.restart() 这样可以重新启动我的Runnable's 参数的方法。

这是我的代码,您可以查看它,并更好地了解我尝试实现的目标

private Runnable rStartCPRTick = new Runnable() {
    public int seconds = 0;
    public int minutes = 0;
    public int hours = 0;

    @Override
    public void run() {
        if(++seconds%60 == 0) //increases the time by one second
            if(++minutes%60 == 0)
                hours++;
        mActivity.updateCPRTime(formatHHMMSS(hours,minutes,seconds));
        mStartCodeHandler.postDelayed(this,1000); // tick again in 1s
    }

    public void restartCPRTick(){
          seconds = 0;
          minutes = 0;
          hours = 0;
    }
};

我的runnable,我希望能够从外部Runnable 调用resetCPRTick(),然后调用从一开始的run。

这样的事情可能吗?

谢谢!!

【问题讨论】:

    标签: java android timer runnable


    【解决方案1】:

    你的 runnable 是一个类。你可以添加任何你想要的方法。只需保留对它的引用并调用执行此操作的方法(为此,您可能希望使其成为内部类而不是匿名类)。

    【讨论】:

    • 是的,但正如你所看到的,它是一个匿名类,但我想我知道一个解决方案。我将创建我自己的 Runnable 子类,它有一个名为 restart() 的方法,以便实现该类的每个类都必须重写该方法。 :D
    • 那就让它中午匿名吧。没有理由每个班级都必须是匿名的
    • 是的,但是以后我会有更多的类,我的做法是,子类化只需要 1 个,这就是我的编码风格,所以我现在有点喜欢它。
    猜你喜欢
    • 1970-01-01
    • 2015-04-20
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 2018-06-17
    相关资源
    最近更新 更多