2016-04-14 12 views
3

Das ist also ein Tuff. Ich habe eine Aktivität, die eine Klasse aufruft, die einen http-Downloader aufruft, der die asynchrone Aufgabe ist. Was ich tun möchte, ist eine Bitte warten Ladebildschirm Benachrichtigung für den Benutzer, während die Aktivität alle Daten aus dem Web erhält. Ich habe keine Ahnung, wie der Ladebildschirm aufgerufen werden kann. Gewöhnlich haben Sie es in der asynchronen Aufgabe, aber meine asynchrone Aufgabe hat keine Ansicht. Wie geht man am besten damit um? Vielen Dank für Ihre Hilfe. Mein http-Client hat eine doInBackground() also sollte ich das auf preExecute und postExecute dort setzen? Aber wie würde dann meine Hauptmethode, die zweimal entfernt wird, wissen, wann sie herunter ist und wann nicht.Langsame Umschaltung zwischen Android-Aktivitäten. Versucht, einen Fortschrittsdialog zu verwenden, um seinen Ladevorgang anzuzeigen

Wenn eine Schaltfläche angeklickt wird, startet sie die Aktivität und beginnt alle Methoden zu verarbeiten, aber es bleibt bei der ersten Aktivität, bis alles fertig geladen ist. Ich möchte nicht, dass ich den Fortschrittsdialog möchte. Es wird einfach nicht angezeigt. Irgendwelche Gedanken dazu?

NEUE UPDATES Ok, jetzt habe ich das Setup etwas besser gemacht, jetzt erscheint nun zumindest der Fortschrittsdialog. Das Problem ist, dass die Async-Task nicht beendet wird.

Antwort

1

Sie sollten eine AsyncTask verwenden. Es muss keine Sicht haben, es ist nur ein Hintergrundprozess wie ein Thread.

Siehe this zur korrekten Verwendung einer AsyncTask mit einem ProgressDialog. Führen Sie Ihre Methoden in der doInBackground() Methode der AsyncTask.

+0

Ok, also ändere ich etwas von meinem Code, um zu tun, wie Sie vorgeschlagen haben, aber es wird nie fertig im Hintergrund laufen. soll ich der DoinBackground-Methode wie eine Endmarkierung oder etwas hinzufügen? – MNM

+0

Oh, ich weiß nicht, ob das ein Problem ist oder nicht, aber es ruft einen JSON-Parser auf, der einen http-Client aufruft, der ein Async ist. – MNM

+1

Wenn Sie alles schließen oder stoppen wollen, nachdem alles andere fertig ist, tun Sie es in der 'onPostExecute()' Methode. Alles, was hier auftritt, tritt auf, nachdem alles andere in der Methode 'doInBackground()' abgeschlossen ist. – esfox