2016-06-19 6 views
0

Я хочу запустить цикл for каждые 5 минут для приложения для Android. Есть ли лучший способ, чем это, где меньше обработки делаетсяЗапуск для цикла периодически

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

Использование 'sleep' - не уверен, что на языке программирования, который вы используете –

+0

Это выглядит как Java. Это? –

+0

Android в основном –

ответ

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(); 

То есть, я не думаю, что вы можете использовать это для бесконечного количества времени, так как это требует времени окончания. Хотя вы можете взломать его, как только он будет завершен.

0

Вы должны пойти на установку Repeat Alert на каждые 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); 
Смежные вопросы