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

Sleep verwenden in meiner Anwendung

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von korndi, 18.10.2010.

  1. korndi, 18.10.2010 #1
    korndi

    korndi Threadstarter Junior Mitglied

    Beiträge:
    28
    Erhaltene Danke:
    3
    Registriert seit:
    18.10.2010
    Hallo!!

    Ich suche einen Entwickler der mir kurz helfen kann bei einem Sleep... Ich bekomme es nie hin, da sich meist meine Anwendung aufhängt..

    mit freundlichen grüßen

    Ps: Skypekontakt: popp-korn
     
  2. Mereep, 18.10.2010 #2
    Mereep

    Mereep Neuer Benutzer

    Beiträge:
    7
    Erhaltene Danke:
    0
    Registriert seit:
    16.10.2010
    ? Codesnippet?
     
  3. korndi, 18.10.2010 #3
    korndi

    korndi Threadstarter Junior Mitglied

    Beiträge:
    28
    Erhaltene Danke:
    3
    Registriert seit:
    18.10.2010
    public void onItemClick(AdapterView<?> arg0, View v, int item, long id) {

    SelectedItem = tmp[item];
    //Thread thread = new Thread(new Timer());
    //thread.start();
    while (true)
    {
    Handler handler = new Handler();
    try {
    handler.wait(2000);
    MainView();
    } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    }


    }
    });


    public void MainView ()
    {
    ll.removeAllViews();
    setContentView(ll);

    TextView tv = new TextView(getApplicationContext());
    tv.setGravity(Gravity.CENTER_HORIZONTAL);
    tv.setTextSize(30);
    TextView tv3 = new TextView(getApplicationContext());
    tv3.setGravity(Gravity.CENTER_HORIZONTAL);
    tv3.setTextSize(30);
    tv3.setTextColor(Color.RED);
    tv.setText("Your Seleceted TV Channel is:");
    tv3.setText(SelectedItem+"\n");
    ll.addView(tv);
    ll.addView(tv3);
    }
     
  4. the_alien, 18.10.2010 #4
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Kein Wunder, dass die App nicht mehr funktioniert. Du hast ja auch eine explizite Endlosschleife in deiner Anwendung...
     
  5. ko5tik, 18.10.2010 #5
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    Erzähl einfach, was du beabsichtigst ( eine endlose Schleife und warten in
    dem GUI-Thread sind sicherlich nicht das was du vorhast - wenn doch, dann hat es ja funktioniert ;) )
     
  6. korndi, 18.10.2010 #6
    korndi

    korndi Threadstarter Junior Mitglied

    Beiträge:
    28
    Erhaltene Danke:
    3
    Registriert seit:
    18.10.2010
    Danke.. Für die antworten.. Also ich habe eine view in einer funktion. Die ich mit einem button aufrufe. Deshalb will ich eine endlosschleife ( die beabsichtigt ist) die di view alle 10 sek neu aufruft, da ich dort infos von einer db über php und webrequest abrufe. Mfg korndi
     
  7. the_alien, 18.10.2010 #7
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Aber deine GUI blockiert bei der Endlosschleife. Dementsprechend ist die App nicht zu benutzen.
    Wenn du da alle 10 Sekunden pollen möchtest, dann starte einen neuen Thread (sollte man sowieso bei webrequests, sonst kann es bei einem Timeout auch dazu führen, dass du eine ANR kriegst), erstelle dir einen Handler und mache alle 10 Sekunden dort eine Abfrage.
    Im GUI Thread brauchst du dann noch einen Handler, der benachrichtigt wird bei Updates. Und bau um Himmels willen nicht jedesmal den View komplett neu auf. Das verbraucht Rechenzeit und Akku und bringt keinen Vorteil.
     
  8. ko5tik, 18.10.2010 #8
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    rrunOnUiThread() wurde auch reichen...
     
  9. korndi, 18.10.2010 #9
    korndi

    korndi Threadstarter Junior Mitglied

    Beiträge:
    28
    Erhaltene Danke:
    3
    Registriert seit:
    18.10.2010
    Danke für die antwort. Ich habe es schon probiert aber ich schaffe es einfach nicht.. Kann ich dir mein projekt senden? ich programmier normalerweiß nur in c# und normales java
     
  10. the_alien, 18.10.2010 #10
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Poste hier doch mal den Ausschnitt der nicht funktioniert. Dann bin nicht nur ich da um zu helfen.
     
  11. korndi, 18.10.2010 #11
    korndi

    korndi Threadstarter Junior Mitglied

    Beiträge:
    28
    Erhaltene Danke:
    3
    Registriert seit:
    18.10.2010
  12. the_alien, 18.10.2010 #12
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Gibt es in C# und normalen Java keine mehrschichtige Architektur? ;)
    Starte im onCreate() einen Worker Thread, erstelle in dem Thread einen Handler und speichere diesen als Objektvariable.
    Dann kannst du in deinen onClickListenern einfach sowas machen:
    Code:
    {
    handler.post(new Runnable() {
    public void run() {
        final String result = getData("blah");
        ActivityClass.this.runOnUi(new Runnable() {
            public void run() {
                com = result;
                updateView();
            }
        }
    }
    Damit blockiert der Aufruf nicht mehr die GUI.
     
  13. korndi, 18.10.2010 #13
    korndi

    korndi Threadstarter Junior Mitglied

    Beiträge:
    28
    Erhaltene Danke:
    3
    Registriert seit:
    18.10.2010
    sorry aber was ist ein worker thread?

    Ich möchte einfach die updateview alle 10 s aufrufen.. kan mir jemand die zeilen code antworten. Mit threads habe ich noch nie was gemacht...
     
  14. the_alien, 18.10.2010 #14
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Code:
    Thread worker = new Thread() {
    private Handler handler;
    public void run() {
    handler = new Handler();
    }
    public void post(Runnable r) {
    handler.post(r);
    }
    }
    Wenn du handler im Beispiel oben ersetzt durch "worker" wird das so gehen.
     

Diese Seite empfehlen