Zwei Anfägerprobleme

  • 6 Antworten
  • Letztes Antwortdatum
D

djrick

Neues Mitglied
0
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!
 
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
 
Hey,
Das ist genau das was ich gesucht hab. Super! Danke :)
 
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?
 
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.
 
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 :(
 
Unbedingt das Log befragen und uns mitteilen, wenn es nicht klar ist. Sonst ist eine Antwort nur geraten...
 

Ähnliche Themen

W
Antworten
2
Aufrufe
888
rene3006
R
P
Antworten
10
Aufrufe
2.293
deek
D
D
Antworten
9
Aufrufe
3.876
lordzwieback
lordzwieback
Zurück
Oben Unten