2016-04-26 7 views
1

In meiner App gibt es eine Aktivität, die zwei AsyncTask nacheinander im Hintergrund ausführt.Wird in einer Aktivitätsproblematik zweimal ein Fortschrittsdialog angezeigt?

In diesen AsyncTasks OnPreExecute ich den Code unten haben (progressDialog ist privat):

progressDialog=UI.getProgressDialog(); 
progressDialog.show(); 

Die UI-Klasse eine Klasse ist, die einige Layout-Management implementiert, und in Verfahren getPregressDialog() Ich neue explizit erstellen ProgressDialog und gibt den neuen ProgressDialog an den Aufrufer zurück.

Im OnPostExecute() Methode von AsyncTasks habe ich den folgenden Code:

if(progressDialog.isShowing()) 
    progressDialog.dismiss(); 

Nach erste Aufgabe ausgeführt und progressDialog entlassen, erscheint die zweite. Aber wird nie entlassen. Es scheint die Bedingung isShowing() gibt false zurück (Offensichtlich kann ich den Fortschrittsdialog sehen);

Irgendwelche Vorschläge?

+0

definieren progressDialog global und verwenden progressDialog.show in ersten asynktask dann if (progressDialog.isShowing()) progressDialog.dismiss() verwenden; im zweiten asyntask ...! – Nowshad

+0

Ja, es ist ein privates Feld in der Klasse. – Milad

+0

kann es Verzögerung wegen schwerer Daten vom Server oder einer anderen Seite in asyntask verursachen, wenn Sie es zweimal verwenden, aber Sie können einen anderen Ansatz wie verwenden. ich sagte im obigen Kommentar ..... mache es auch öffentlich ... – Nowshad

Antwort

1

Eine Variable, die öffentlich ist, bedeutet, dass jede Klasse darauf zugreifen kann. Es ist nützlich für, wenn die Variable für Ihre gesamte Aktivität oder Anwendung zugänglich sein sollte.

  • können Sie if (progressDialog != null && progressDialog.isShowing()) { } verwenden

  • Deklarieren public statt private Variable. Privat

öffentlichen ProgressDialog progressDialog;

+0

Lassen Sie mich bitte informieren. –

+1

Danke, die Variable öffentlich machen macht den Trick. – Milad

+0

@Sepinood Move ahead. Gute Kodierung –