2016-03-30 8 views
0

Momentan habe ich einen CountdownTimer, der auf dem UI-Thread ausgeführt wird und die Schnittstelle gemäß onTick aktualisiert.CountdownTimer im Worker-Thread, der den UI-Thread aktualisiert

Es funktioniert nicht immer wie erwartet, weil ich sah, dass die App stecken bleiben kann, wenn ich es in den Hintergrund (drücken Sie die Home-Taste) und starte andere CPU-bedürftige Anwendungen. Ich denke, die beste Lösung wäre, den CountDownTimer in einen Hintergrund-Thread zu verschieben. Liege ich falsch?

Was ist der beste Weg, um den UI-Thread entsprechend dem CountDownTimer Tick zu aktualisieren? Die Verwendung von AsyncTask ist wahrscheinlich keine gute Idee, da es für kurze Aufgaben empfohlen wird, aber ich habe einige Empfehlungen für IntentService und LocalBroadcastManager gefunden.

Was ist die beste Lösung, um dies zu erreichen? Beispiele wären großartig. Vielen Dank!

Antwort

0

1) Verwenden Sie AlarmManager und Ausstehende Absichten für periodische zukünftige Aufgaben. Check this

2) Verwenden Sie Handler, um ein Runnable zu senden, um die Benutzeroberfläche zu aktualisieren.

new Handler(Looper.getMainLooper()).post(new Runnable() { 
       @Override 
       public void run() { 
        Toast.makeText(context,"This is run on UI thread",Toast.LENTH_SHORT).show(); 
       } 
      });