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

Zwei Anfägerprobleme

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von djrick, 26.05.2009.

  1. djrick, 26.05.2009 #1
    djrick

    djrick Threadstarter Neuer Benutzer

    Beiträge:
    7
    Erhaltene Danke:
    0
    Registriert seit:
    26.05.2009
    Hallo Zusammen,

    Ich beschäftige mich seit einigen Tagen mit der Entwicklung eigener Apps für mein Google G1.

    Ich habe bereits eine erste kleine Anwendung fertig, jedoch harpert es noch an ein paar Feinheiten:

    Meine Anwendung führt eine Abfrage aus, die eine HTML Seite im Internet aufruft und die daraus resultierende Antwort auswertet. Das funktioniert so weit auch zufrieden stellend, das Problem, welches ich habe ist folgendes:

    Ich habe ein Button in meiner App und bei "onClick" wird die HTTP Abfrage und die Auswertung ausgeführt. Dies dauert natürlich eine gewisse Zeit (bei GPRS länger als bei UMTS Verbindung). Während dieser ganzen Zeit bleibt der Button "gedrückt" (also Gelb). Dauert die Abfrage nun länger stürzt mein App ab, weil es sich natürlich denkt es hätte sich aufgehangen.

    Frage: Wie kann ich das Problem umgehen?

    Meine Vorstellung einer Lösung sieht so aus: Ich hätte gern eine ProgressBar (dieser Gelbe-drehende-Kreis) die bei OnClick ausgeführt wird und so wie ich das sehe muss dann die HTTP Abfrage + Auswertung in einen weiteren Prozess (Activity???) übergeben werden, in der das Timeout sagen wir 10 Sekunden ist. Ist das schonmal der richtige Ansatz? Wenn ja, wie realisiere ich das, hat jemand einen gut verständlichen SampleCode?


    Meine Zeite Frage: Hat jemand ein gutes Beispiel, wie man eine Anwendung schreibt, die im Hintergrund alle beispielsweise 60 min bestimmte Dinge ausführt?

    Leider finde ich in den ganzen Code-Beispielen die man so im Internet findet ender nichts was ich brauchen kann oder der Code ist zu unverständlich.
    Wie gesagt: Ich habe gerade erst angefangen mich in die Materie der G1 Programmierung einzuarbeiten. (Java Kenntnisse natürlich vorhanden).

    Ich hoffe ihr könnt mir ein paar hilfreiche Denkanstöße geben.
    Vielen Dank!
     
  2. manu, 26.05.2009 #2
    manu

    manu Fortgeschrittenes Mitglied

    Beiträge:
    329
    Erhaltene Danke:
    25
    Registriert seit:
    29.03.2009
    Phone:
    Galaxy Nexus
    Das ganze geht mit Threads. So kannst du parallel mehrere Sachen abarbeiten.

    Hier mal ein Beispiel für deine ProgressBar:
    Code:
    myProgressDialog = ProgressDialog.show(deineClass.this, "Please wait...", "Loading data....", true);
    new Thread() {
         public void run() {
              //Hier führst du deine Serveranfragen aus
              myProgressDialog.dismiss();
          }
    }.start();
    Du startest die ProgressBar im Haupthread. Der weitere Thread schließt sie dann wieder, wenn alles abgearbeitet ist.

    Gruß Manu
     
  3. djrick, 26.05.2009 #3
    djrick

    djrick Threadstarter Neuer Benutzer

    Beiträge:
    7
    Erhaltene Danke:
    0
    Registriert seit:
    26.05.2009
    Hey,
    Das ist genau das was ich gesucht hab. Super! Danke :)
     
  4. djrick, 27.05.2009 #4
    djrick

    djrick Threadstarter Neuer Benutzer

    Beiträge:
    7
    Erhaltene Danke:
    0
    Registriert seit:
    26.05.2009
    So...das klappt jetzt wunderbar...jetzt direkt das nächste Problem :(

    In meinem Thread steht so etwas:
    Code:
    mFavList.setAdapter(new ArrayAdapter<String>(this,
                      android.R.layout.simple_list_item_1, new String[] {
                              "Apple", "Peach","Banane" }));
    
    Ich habe eine ListView die ich in dem Thread mit Daten füllen möchte. Wenn ich das so ausführe, dann stützt die Anwendung auch ab. Ich nehme an weil das "this" Objekt nicht existent ist oder auf ein falsches zeigt?
     
  5. friedger, 27.05.2009 #5
    friedger

    friedger Erfahrener Benutzer

    Beiträge:
    175
    Erhaltene Danke:
    15
    Registriert seit:
    15.01.2009
    Was ist jetzt die Frage?
    Soll ich mal in Deinen Stacktrace sehen, warum die Anwendung abstürzt?

    Es gibt ein Beispiel in den APIDemos (List13.java), das könnte auch interessant sein.
     
  6. djrick, 27.05.2009 #6
    djrick

    djrick Threadstarter Neuer Benutzer

    Beiträge:
    7
    Erhaltene Danke:
    0
    Registriert seit:
    26.05.2009
    Die Frage ist: Warum stürzt es ab, wenn ich auf eine ListView meiner Hauptapp von dem Thread aus drauf zugreife mit der oben genannten Methode.

    ich denke es liegt an diesem "this"...aber....ich hab keine Ahnung wie ich die ListView ansprechen soll :(
     
  7. friedger, 28.05.2009 #7
    friedger

    friedger Erfahrener Benutzer

    Beiträge:
    175
    Erhaltene Danke:
    15
    Registriert seit:
    15.01.2009
    Unbedingt das Log befragen und uns mitteilen, wenn es nicht klar ist. Sonst ist eine Antwort nur geraten...
     

Diese Seite empfehlen