2016-08-29 4 views
1

Ich habe eine AsyncTask ausgeführt und in diesem Thread starte ich einen runOnUiThread, um meine Ansichten zu manipulieren. Wenn ich meine AsyncTask schließe, läuft RunOnUiThread noch 1 Mal länger, nachdem ich meine AsyncTask geschlossen habe. Wie kann ich den runOnUiThread schließen? Vielen Dank!Schließen runOnUiThread

@Override 
protected String doInBackground(String... params) { 
    while(running.get()) { 

     // Background thread sleeps 
     try { 
      Thread.sleep(produceRadwaste_countdown * 1000); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 

     // UI thread touching some view elements 
     activity.runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
       radwasteTon.incrementStack(); 
      } 
     }); 

     // Delete thread if player is game over 
     if(GameLogic.isGameOver()) { 
      clearThreads(); 
     } 
    } 

    return "Running"; 
} 

public void clearThreads() { 
    running.set(false); 
    this.cancel(true); 
} 

Antwort

2

Kann ich eine andere Lösung vorschlagen?

Implementieren Sie die Methode onProgressUpdate (Params ...) in AsyncTask. Dann können Sie publishProgess von doInBackground (Params ...) aufrufen;

onProgressUpdate (Params ...) wird auf ui-Thread ausgeführt werden.

+0

Dank es funktioniert auf der Benutzeroberfläche und ich brauche nicht die runOnUiThread, aber es läuft noch 1 mal nach dem Abbrechen des Threads – Ghork

+1

Okay, ich überprüfte den gesamten Prozess mit logcat und es war ein bisschen komisch, weil manchmal er ausführt publishProgress(), bevor er das Spiel über boolean überprüft hat und manchmal prüft er den booleschen Wert, bevor er publishProgress() ausführt. Jetzt mache ich ein wenig Thread.sleep zwischen diesen beiden Operationen und es funktioniert, aber ich denke, das ist nicht die beste Lösung. – Ghork

+0

Ich habe gelesen, dass AsyncTask eine maximale Poolgröße hat und es wäre eine sehr schlechte Sache für mein Spiel, weil dieser Thread auf jedem Spielsymbol läuft und ich ungefähr 5 - 10 Elemente haben werde. – Ghork

Verwandte Themen