如何进行CountUp计时器循环?

时间:2019-01-24 08:35:02

标签: android timer chronometer

我需要每5分钟启动一次任务并每5分钟重新启动一次以执行相同任务的时间。

我已经尝试过使用自己的自定义倒数计时器,但是我不知道如何实现循环

private static final long INTERVAL_MS = 1000;
private final long duration;

protected CountUpTimer( long durationMs ){
    super( durationMs, INTERVAL_MS );
    this.duration = durationMs;
}

public abstract void onTick( int second );

@Override
public void onTick( long msUntilFinished )
{
    int second = ( int ) ( ( duration - msUntilFinished ) / 1000);
    onTick( second );
}

@Override
public void onFinish()
{
    onTick( duration / 1000 );
}

在我班上:

private void initCountUpTimer()
{
    int SECONDS = 500*60;
    CountUpTimer timer = new CountUpTimer(SECONDS)
    {
        @Override
        public void onTick( int second )
        {

        }
    };
}

有人可以帮助我吗?谢谢。

2 个答案:

答案 0 :(得分:0)

您可以在Android中使用一些API来做到这一点。

来自官方Android文档-

在考虑完成主线程工作时,请考虑三个因素:

可以推迟工作,还是需要在排定的时间进行?例如,如果您需要响应用户单击按钮而从网络中获取一些数据,则必须立即完成该工作。但是,如果您要将日志上传到服务器,则可以推迟该工作,而不会影响应用程序的性能或用户期望。

工作开始执行后,操作系统是否应尝试使应用程序保持活动状态?例如,解码和显示位图只需要在应用程序处于前台且过程处于活动状态时发生。但是,即使该应用程序处于后台且未被积极使用,音乐播放器也需要继续播放音乐。

工作是否响应系统触发而开始?这些触发因素可能是诸如网络状态,电池状态,存储水平等。例如,您可能要等待与服务器通信,直到您退出飞行模式。在这种情况下,如果应用程序进程终止,则可能希望在设备再次联机后重新创建它,以便您可以执行工作。

根据这些因素,选择执行任务的方式

您可以检查使用哪种方法here developer.android.com/guide/background

答案 1 :(得分:0)

如果要循环播放,只需在onFinish()中再次启动计时器

@Override
public void onFinish()
{
    // Start again
}

考虑使用AlarmManager,JobScheduler等...您不应尝试像这样循环,操作系统会杀死您的进程