2016-06-19 11 views
0

Ich möchte eine For-Schleife alle 5 Minuten für eine Android-Anwendung ausführen. Gibt es eine bessere Methode als diese weniger Verarbeitung, bei derFür Schleife regelmäßig ausgeführt

erfolgt
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' Verwendung - nicht sicher, ob der Programmiersprache Sie –

+0

Das sieht aus wie Java verwenden. Ist es? –

+0

Android grundsätzlich –

Antwort

0

CountDownTimer ist eine gute Klasse für diese Art von Arbeit. Es sieht wie folgt aus:

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

Das heißt, ich glaube nicht, dass Sie dies für eine unendliche Menge an Zeit nutzen kann, da es eine Endzeit erfordert. Obwohl Sie es hacken können, um es neu zu starten, sobald es fertig ist.

0

Sie sollten für Set Repeat Alert alle 5 Minuten gehen und führen Sie Ihren Code darin.

Auch Sie können für Handler wie unten Code gehen.

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; 
      } 
     } 
    }; 

Sie können beginnen, indem das Aufruf:

mHandler.sendEmptyMessageDelayed(REPEAT_CALL,10); 

Dann, nachdem sie von allen 5 Minuten nennen.

können Sie diesen Anruf abbrechen zurück durch den Aufruf unter Methode:

mHandler.removeMessages(REPEAT_CALL);