2016-05-26 12 views
0

Ich möchte die gleiche Methode aufrufen, sagen alle 5 Sekunden, ich versuche, eine Art von Datenbank-Listener zu erstellen, der für Datenbankänderungen zuhören wird. Der folgende Code funktioniert nicht, ich erwarte, dass das Protokoll "RUNNING" alle 5 Sekunden zum Testen ausdruckt, aber dies wird nur einmal aufgerufen, wenn ich die Methode zum ersten Mal aufrufen. Android Loop-Methode alle X Sekunden

private void DBListern() { 
    // TODO Auto-generated method stub 

     //accessWebService(); 
     System.out.println("RUNNING"); 

     final Handler handler = new Handler(); 
     handler.postDelayed(new Runnable() { 
     public void run() { 

     DBListern(); 

     } 

    }, 5000); 
} 
+0

Warum nicht Schnittstellen an Orten hinzufügen, wo Sie die Datenbank ändern und realisieren? –

Antwort

0

Versuchen Sie, java.util.concurrent.ScheduledExecutorService zu verwenden. Beispiel:

private final ScheduledExecutorService exec = Executors.newScheduledThreadPool(1); 

private void DBListern(int delayInSeconds) { 

    //accessWebService(); 
    System.out.println("RUNNING"); 

    exec.schedule(new Runnable() { 
      @Override 
      public void run() { 
       DBListern(); 
      } 
     }, delayInSeconds, TimeUnit.SECONDS); 

}

0

Ok, aus irgendeinem Grund die Funktion selbst nicht so erstellt nennen kann ich eine andere Funktion loop() genannt, die DBListern alle 5 Sekunden ruft:

private void DBListern() { 
    // TODO Auto-generated method stub 

    //accessWebService(); 
    System.out.println("RUNNING"); 

} 


private void loop() { 
      // TODO Auto-generated method stub 

      final Handler handler = new Handler(); 
      handler.postDelayed(new Runnable() { 
      public void run() { 

      DBListern(); 
      handler.postDelayed(this, 5000); 
     } 
    }, 5000); 

} 

So loop() ist zuerst angerufen und dann alle 5 Sekunden DBListern.

+0

Ihr Code kann Speicherlecks verursachen. Sie können 'Loader' verwenden, um diesen Job oder Event-Bus auszuführen, oder einige Schnittstellen erstellen. –

Verwandte Themen