App stoppen während ProgressBar läuft

  • Antworten:5
ChriCo
  • Forum-Beiträge: 24

09.05.2011, 18:07:51 via Website

Hi zusammen,

ich versuche meine App pausieren zu lassen (d.h. im Hintergrund wird nichts weiter gearbeitet) während eine ProgressBar erscheint.

Mein aktueller Code sieht wie folgt aus:
1DialogWait = ProgressDialog.show(Bac12.this,
2 "Checking Database" , " Loading. Please wait ... ", true);
3 //DialogWait.setProgress(2);
4 DialogWait.setIcon(R.drawable.database);
5
6
7 new Thread() {
8 public void run() {
9
10 try{
11 sleep(5000);
12 } catch (Exception e) { }
13
14 // Dismiss the Dialog
15 DialogWait.dismiss();
16 }}.start();

Leider arbeitet die App danach einfach weiter....

Was muss ich ändern, damit wirklich das Programm stoppt, bis der sleep zuende gelaufen ist?????

Danke!!

— geändert am 09.05.2011, 18:08:22

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

09.05.2011, 19:06:45 via Website

Hallo,

Du startest einen nebenläufigen Thread der nichts anderes macht als 5000 ms genau nix tut. und danach beendet wird. Das die Anwendung dabei weiterläuft ist völlig korrekt, das soll sie per Definition auch. Dafür startest Du ja einen nebenläufigen Thread.

Threads werden verwendet um Aufgaben zu erledigen die ansonsten eine "ANR" Application not responding auslösen würden. Die Zeitgrenze für solche ANRs liegt bei Anwendereingaben die nicht innerhalb von 5 Sek. beendet werden bzw. bei 10 Sek. für BroadcastReceiver.

lg Voss

Antworten
ChriCo
  • Forum-Beiträge: 24

09.05.2011, 19:50:15 via Website

ich verstehe, danke für die Infos! Gibt es dann eine Funktion, ähnlich wie die Thread.sleep() um die ProgressBar laufen zu lassen und dass Programm dabei zu stoppen??

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

09.05.2011, 19:52:39 via Website

warum willst du den user warten lassen, obwohl er auf nichts warten muss??

swordiApps Blog - Website

Antworten
ChriCo
  • Forum-Beiträge: 24

09.05.2011, 20:36:51 via Website

damit es so aussieht, als würde im Hintergrund schwer gerechnet werden ;-)

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

09.05.2011, 22:09:03 via Website

aha - macht natürlich sinn ja :D


mach dir einen dialog

dann startest einen asynctask

im onPreExecute()
machst ein showDialog

im onPostExecute()
machst dismissDialog()

im doBackground
machst dein sleep()

swordiApps Blog - Website

Antworten