2016-05-25 12 views
-1

Nachdem ein Bild vom Benutzer empfangen wurde und diese in ein Array eingefügt wurde, wird die Methode animate() von main aufgerufen. Diese Methode enthält Asynktask. Wie kann ich diese AsyncTask beenden? Dies ist mein Code:Fehler beim Beenden AsyncTask

private void animate() { 
    new AsyncTask<Void, Void, Void>() { 
     @Override 
     protected Void doInBackground(Void... params) { 
      try { 
       Thread.sleep(1000); 
       runOnUiThread(new Runnable() { 
        @Override 
        public void run() { 
         iv.setImageResource(pics[0]); 
        } 
       }); 
      } catch (Exception ex) { 
       ex.printStackTrace(); 
      } 
      while (true) { 
       try { 
        Thread.sleep(500); 
        runOnUiThread(new Runnable() { 
         @Override 
         public void run() { 
          iv.setImageResource(pics[pos]); 
          pos = (pos + 1); 
         } 
        }); 
       } catch (Exception ex) { 
        ex.printStackTrace(); 
       } 
      } 
     } 
    }.execute(); 
} 
+0

Bitte post das logcat. Markieren Sie auch die Zeile, in der der Fehler auftritt. – Vucko

+0

Ich glaube nicht, AsyncTask wäre eine gute Option für Sie basierend auf dem Code-Schnipsel, die Sie bereitgestellt haben. Try Timer oder Unterklasse Thread. – antonio081014

Antwort

0

aus dem Code, ich denke, was Sie wollen, ist das Bild, das Sie in einem Image regelmäßig zeigen, zu ändern. Ich würde vorschlagen, dass Sie Ihren Code ändern, um einen Timer zu verwenden:

private Timer mTimer; 

private void startCarousel(){ 
    mTimer = new Timer(); 
    TimerTask timerTask = new TimerTask() { 
     public void run() { 
      // Your periodic task... 
     } 
    }; 

    mTimer.schedule(timerTask, 1000, 500); 
} 

private void stopCarousel(){ 
    if(mTimer != null){ 
     mTimer.cancel(); 
     mTimer.purge(); 
    } 
} 
Verwandte Themen