1. Nimm jetzt an unserem AGM - Gewinnspiel teil - Informationen zum M1, A2 und A8 findest Du hier, hier und hier!
  1. korndi, 18.10.2010 #1
    korndi

    korndi Threadstarter Junior Mitglied

    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

    ? Codesnippet?
     
  3. korndi, 18.10.2010 #3
    korndi

    korndi Threadstarter Junior Mitglied

    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

    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

    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

    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

    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

    rrunOnUiThread() wurde auch reichen...
     
  9. korndi, 18.10.2010 #9
    korndi

    korndi Threadstarter Junior Mitglied

    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

    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

  12. the_alien, 18.10.2010 #12
    the_alien

    the_alien Android-Lexikon

    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

    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

    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.