1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Android code anhalten (Thread.sleep)

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von elTorro, 28.07.2011.

  1. elTorro, 28.07.2011 #1
    elTorro

    elTorro Threadstarter Neuer Benutzer

    Beiträge:
    3
    Erhaltene Danke:
    0
    Registriert seit:
    28.07.2011
    Hi,
    Ich habe folgendes Problem, ich möchte das UI anzeigen lassen, im Hintergrund läuft ein code, dieser soll aber kurz warten und dann weiter ausgeführt werden. Es handelt sich um ein Spiel, das warten hat den Sinn, dass man sieht was der CPU-Gegner tut. Für den PC hatte ich das ganze schon implementiert. Ohne CPU funktioniert das ganze.
    Hier mal der Code der für Android nicht funktioniert.
    Zur übersicht hab ich einiges entfernt. Wenn ich diesen Code ausführe stürzt die App ab.

    Code:
    public class Waiter extends Thread {
    
        public Waiter(){
            super();
    
        }
        
        public void run(){
    
    //warten für 2 sekunden
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
      //code weiter ausführen-UI Elemente werden neu gesetzt
        }
    
        public void start(){
            this.start();       
        }
    }
    
    
    Es wäre toll, wenn jemand einen Hinweis, noch besser eine Lösung, für mich hätte.
    Da ich auch gegoogelt habe bin ich auf Handler, postDelay(), postInvalidate() gestoßen und hab auch einiges versucht aber nichts hat zum erfolg geführt.

    LG
     
  2. elTorro, 28.07.2011 #2
    elTorro

    elTorro Threadstarter Neuer Benutzer

    Beiträge:
    3
    Erhaltene Danke:
    0
    Registriert seit:
    28.07.2011
    Ich habe es selbst gelöst, weil ich es doch noch richtig verstanden habe.
    Code:
    public Class Waiter{
    ....
        public void run(){
    
            Handler handler = new Handler(); 
            handler.postDelayed(new Runnable() { 
                 public void run() { 
                     //code weiter ausführen
                 } 
            }, 2000); 
       }
    ...
    }
    
     
  3. swordi, 28.07.2011 #3
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    asynctask ist ne schöne variante für sowas
     
    elTorro bedankt sich.
  4. elTorro, 29.07.2011 #4
    elTorro

    elTorro Threadstarter Neuer Benutzer

    Beiträge:
    3
    Erhaltene Danke:
    0
    Registriert seit:
    28.07.2011
    Hat das einen Vorteil asynctask zu nutzen, wenn ich das richtig verstehe ist das im Grunde als würde man einen Backgroundthread starten, mit dem man trotzdem noch UI manipulationen vornehmen kann, das warten müsste man aber trozdem implementieren.
    Ich habe eben mal meine Variante daraf getestet, ob die UI noch wärend des warten auf Eingaben reagiert und es scheint so als ginge es. Aber vielleicht treten bei anderen Projekten deswegen Fehlverhalten auf. Immoment reicht das für meine Anforderungen, aber vielleicht lösen wir dadurch Probleme anderer oder Zukünftige Probleme.

    Danke und LG
     
  5. swordi, 29.07.2011 #5
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    wenn du im UI thread wartest, wird das sicher zu problemen führen.
     

Diese Seite empfehlen