ProgressDialog in AsyncTask hängt beim zweiten Durchlauf

  • Antworten:3
Erich Hunkemöller
  • Forum-Beiträge: 8

09.09.2012, 14:42:02 via Website

Hallo Leute,

habe ein kleines Problem mit einem ProgressDialog. In meiner Activity drücke ich einen Button, woraufhin ein AsyncTask-Objekt gestartet wird. Mithilfe von AsyncTask wird im Hintergrund ein HTTP-Get durchgeführt, währenddessen wird ein ProgressDialog gezeigt.

Auszug:

1public class MyTask extends AsyncTask<Void, Void, Void>{
2
3 protected void onPreExecute() {
4 dialog.setTitle("Please wait");
5 dialog.setMessage("Retreiving data...");
6 dialog.setCancelable(false);
7 dialog.show();
8 }
9 @Override
10 protected Void doInBackground(Void... params) {
11
12 try {
13 de.mobo.myproject.executeHTTPget();
14 } catch (Exception e) {
15 // TODO Auto-generated catch block
16 e.printStackTrace();
17 }
18 return null;
19 }
20 protected void onPostExecute(String result) {
21 cancel(true);
22 }
23 }

1public void onClick(View v) {
2 MyTask ladebalken = new MyTask();
3
4 synchronized (ladebalken) {
5 ladebalken.execute();
6 }

Das ganze funktioniert prinzipiell wunderbar, das einzige Problem ist, dass beim weiteren Durchläufen (weiteren Clicks auf den Button) das drehende Rad des ProgressDialogs steht. Und das wirkt natürlich, als ob die Anwendung hängt. Wie gesagt, es läuft, das Rad hängt zwar, aber die Methode
1de.mobo.myproject.executeHTTPget();
wird ausgeführt und der ProgressDialog beendet.

Hat jemand einen Tipp?

MfG

Antworten
Erich Hunkemöller
  • Forum-Beiträge: 8

10.09.2012, 18:15:07 via Website

Hallo Harald,

der Dialog wird innerhalb der Klasse mit:

1public static ProgressDialog dialog = null;
definiert und

in der onCreate-Methode instanziiert:

1dialog = new ProgressDialog(this);

Ich habe allerdings bemerkt, dass dass sich das Rad nur auf meinem Android 2.2 nicht dreht. Auf anderen Geräten, die Android 2.3.6 oder Android 4 rennen, läuft es tadellos. Noch viel merkwürdiger....

Gruß

— geändert am 10.09.2012, 18:16:43

Antworten
Gelöschter Account
  • Forum-Beiträge: 694

10.09.2012, 19:30:42 via App

Da hast Du aber Glück das es überhaupt sauber läuft. Das Dialoganlegen in der Activity könnte nach hinten losgehen.

Schau mal in die Code Snippets zwei Bretter weiter. Dort gibt es zwei AsyncTasks mit eingebautem ProgressDialog. Je eine Variante des AsyncTask mit InnerClass und mit externer Klasse.

Antworten