定期运行循环

时间:2016-06-19 12:30:28

标签: android loops delay

我想为Android应用程序每5分钟运行一次for循环。有没有比这更好的方法

for(;;) {
    // code
    final long NANOSEC_PER_SEC = 1000 * 1000 * 1000;
    long startTime = System.nanoTime();
    while ((System.nanoTime() - startTime) < 5 * 60 * NANOSEC_PER_SEC) {
    }
}

2 个答案:

答案 0 :(得分:0)

CountDownTimer对于这类工作来说是一个很好的课程。它看起来像这样:

long duration = 12345;
long ticksInterval = 5000; // 5 second in millis

new CountDownTimer(duration, ticksInterval){
    public void onTick(long remaining) {
        // Do something each ticksInterval millis
    }

    public void onFinish() {
        // Do something after duration millis
    }
}.start();

那就是说,我不认为你可以在无限的时间内使用它,因为它需要一个结束时间。虽然你可以在完成后重新启动它。

答案 1 :(得分:0)

你应该每隔5分钟设置一次重复警报并在其中运行你的代码。

您也可以像下面的代码那样使用Handler。

final  int REPEAT_CALL=2;

    final int mFIVE_MINUTE=5*60*1000;

    private Handler mHandler=new Handler(){


        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);

            switch(msg.what){

                case REPEAT_CALL:
//This will get execute by every 5 minute so write you for loop code here.

                    mHandler.sendEmptyMessageDelayed(REPEAT_CALL,mFIVE_MINUTE);

                    break;
            }
        }
    };

你可以通过调用它来启动它:

 mHandler.sendEmptyMessageDelayed(REPEAT_CALL,10);

之后每隔5分钟就会打电话。

您可以通过调用以下方法取消此回叫:

mHandler.removeMessages(REPEAT_CALL);