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

wait() ,sleep() oder wie auch immer?

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Bobert, 03.12.2010.

  1. Bobert, 03.12.2010 #1
    Bobert

    Bobert Threadstarter Erfahrener Benutzer

    Beiträge:
    161
    Erhaltene Danke:
    15
    Registriert seit:
    21.11.2010
    Phone:
    Nexus S
    Hallo,

    ich möchte den ProgressDialog 1 Sekunde anzeigen und dann Schiessen.
    Wenn ich das wie folgt mache funktioniert das nicht, oder bei this.wait(2000) wird eine Exception gewurfen.

    Wie kann ich das verwirklichen? Danke!

    Gruß Bobert

    Code:
        ProgressDialog progress = ProgressDialog.show(TryDialog.this, "", "Loading. Please wait...", true);
                
        progress.show();
                
        try {
            Thread.sleep(1000);
            //this.wait(1000);
        } catch (Exception e) {
            returnValues = (TextView)findViewById(R.id.returnValues);
            returnValues.setText(e.toString());
        }        
                
        progress.cancel();
    
     
  2. Lilithian, 03.12.2010 #2
    Lilithian

    Lilithian Android-Hilfe.de Mitglied

    Beiträge:
    69
    Erhaltene Danke:
    23
    Registriert seit:
    26.10.2010
    Code:
    final ProgressDialog progress = ProgressDialog.show(TryDialog.this, "", "Loading. Please wait...", true);
            
            progress.show();
                    
            Runnable r = new Runnable() {
                @Override
                public void run() {
                    progress.cancel();
                }}; 
                    
            Handler mHandler = new Handler();
            mHandler.postDelayed(r, 1000);
    Zur Erklärung: in der Methode run von Runnable überschreibst du, was nach Ablauf der Zeit passieren soll, Runnable r übergibst du dann an einen Handler, der die run-Methode nach einer bestimmten Zeit ausführt.
     
    Bobert bedankt sich.
  3. FireDragon, 03.12.2010 #3
    FireDragon

    FireDragon Neuer Benutzer

    Beiträge:
    22
    Erhaltene Danke:
    7
    Registriert seit:
    07.10.2010
    Hiho,
    EDIT: Lilithian war ein paar minuten schneller :) die Lösung sieht auch etwas schöner aus ; ) Aber trotzdem meine Idee:


    probier das mal hier aus:

    Code:
            
    new Thread(new Runnable() {
                public void run() {
                    progress.show();
                    try {
                      Thread.sleep(10000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                     }
                progress.cancel();
                }
            }).start(); 
    Damit erzeugst du einen Nebenläufigen Thread, der auf das Android UI zugreift über den progressdialog, und dann diesen Thread einschläft für 10 Sekunden, anschließend den Dialog schließt.
     
    Zuletzt bearbeitet: 03.12.2010
    Bobert bedankt sich.
  4. Bobert, 03.12.2010 #4
    Bobert

    Bobert Threadstarter Erfahrener Benutzer

    Beiträge:
    161
    Erhaltene Danke:
    15
    Registriert seit:
    21.11.2010
    Phone:
    Nexus S
    Hallo Lilithian, Hallo FireDragon,

    danke euch. Ja beide Versionen von euch funktionieren!

    Danke euch beiden
    Gruß Bobert
     
  5. Fr4gg0r, 03.12.2010 #5
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    w0t?

    progress.show() in nem nicht gui Thread? Sollte nicht funktionieren dürfen.
     
  6. FireDragon, 03.12.2010 #6
    FireDragon

    FireDragon Neuer Benutzer

    Beiträge:
    22
    Erhaltene Danke:
    7
    Registriert seit:
    07.10.2010
    also ich hatte es voher getestet, und es funktioniert aufjedenfall.. ^^
    auch wenns vlt eigentlich keine Gute Lösung ist, aber gerade damit bekommt man ja das GUI blockiert :p
     
  7. Bobert, 03.12.2010 #7
    Bobert

    Bobert Threadstarter Erfahrener Benutzer

    Beiträge:
    161
    Erhaltene Danke:
    15
    Registriert seit:
    21.11.2010
    Phone:
    Nexus S
    Hallo,

    @Fr4gg0r Definitiv funktioniert folgendes! Aber warum meinst Du das es nicht funktioniert, das habe ich nicht verstanden.

    Gruß Bobert

    Code:
    final ProgressDialog progress = ProgressDialog.show(TryDialog.this, "", "Loading. Please wait...", true);
               
    new Thread(new Runnable() {
        public void run() {
            progress.show();
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            progress.cancel();
        }
    }).start();
    
     
  8. Fr4gg0r, 03.12.2010 #8
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    Ja so funzt es, aber auch nur weil das progress.show() nichts macht.
    Kannst ja mal folgendes probieren
    PHP:
    ProgressDialog progress = new ProgressDialog(getApplicationContext());
    new 
    Thread(){
      public 
    void run(){
        
    progress.show();
        
    progress.dismiss();
      }
    }
    ;)
     
  9. Bobert, 04.12.2010 #9
    Bobert

    Bobert Threadstarter Erfahrener Benutzer

    Beiträge:
    161
    Erhaltene Danke:
    15
    Registriert seit:
    21.11.2010
    Phone:
    Nexus S
    Hallo,

    bei deiner Version kommt folgende Fehlermeldung. "Cannot refer to a non-final variable progress inside an inner class defined in a different method"

    Gruß Ralf
     
  10. Fr4gg0r, 04.12.2010 #10
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    Klugscheißer. :D

    Dann mach den ProgressDialog eben final und probiers dann.
     
  11. Bobert, 04.12.2010 #11
    Bobert

    Bobert Threadstarter Erfahrener Benutzer

    Beiträge:
    161
    Erhaltene Danke:
    15
    Registriert seit:
    21.11.2010
    Phone:
    Nexus S
    :tongue:

    Gruß Bobert :D
     

Diese Seite empfehlen

Besucher kamen mit folgenden Begriffen auf unsere Seite:

  1. android wait