2016-10-04 6 views
0

Ich kann mit Handler und Runnable eine Methode in regelmäßigen Zeitabständen aufrufen. Aber jetzt möchte ich mehr als eine Methode in regelmäßigen Abständen aufrufen. Unten ist der Code in einer meiner Klassen:Wie mehrere Methoden in regelmäßigen Abständen mit Handlern aufgerufen werden?

private Handler handler = new Handler(); 
private Runnable runnable = new Runnable() { 
     @Override 
     public void run() { 
      for(int index = 0; index < count; index++) { 
        //Do something based on the index value 
      } 
      handler.postDelayed(runnable, 500); 
     } 
    }; 

in meinem Code Irgendwo werde ich den folgenden Code haben, die Ausführung zu starten:

handler.postDelayed(runnable, 0); 

So ist die erste Methode, um den Index 0 entspricht aufgerufen wird zuerst gefolgt von anderen Methoden. Und dann wird es eine 500ms Verzögerung geben, um dasselbe zu wiederholen.

Aber ich möchte auch eine 500ms Verzögerung zwischen den Methodenaufrufen. Ich meine, wenn die for-Schleife ausgeführt wird. Wie kann ich es mit nur einem Handler und Runnable machen? Wie kann ich eine 500ms Verzögerung zwischen den Methodenaufrufen einleiten?

Antwort

1

Ich würde den Wert von index über Handler Anrufungen selbst aktualisieren, und vergleichen Sie es mit Ihren count Variable ebenso wie die for Schleife

private Handler handler = new Handler(); 
private Runnable runnable = new Runnable() { 
    private int index = 0; 

    @Override 
    public void run() { 
     //Do something based on the index value 
     index++; 
     if (index < count) { 
      handler.postDelayed(runnable, 500); 
     } else { 
      count = 0; 
     } 
    } 
} 

Außerdem am Start brauchen Sie nicht postDelayed() mit Null aufzurufen Verzögerung können Sie direkt post() anrufen.

+0

Sie sind herzlich willkommen :) –

Verwandte Themen