In meiner app ich in AsyncTask
einige intensive Arbeit mache, wie Android-Tutorials und zeigt eine ProgressDialog
in meinem Haupt meiner Tätigkeit vorgeschlagen:Fortschritt Update von AsyncTask Dialog
dialog = ProgressDialog.show(MyActivity.this, "title", "text");
new MyTask().execute(request);
wo dann später in MyTask
ich poste führt zurück zur Aktivität:
class MyTask extends AsyncTask<Request, Void, Result> {
@Override protected Result doInBackground(Request... params) {
// do some intense work here and return result
}
@Override protected void onPostExecute(Result res) {
postResult(res);
}
}
und auf Ergebnis-Posting, in Haupttätigkeit blende ich den Dialog:
protected void postResult(Result res) {
dialog.dismiss();
// do something more here with result...
}
So funktioniert hier alles gut, aber ich möchte irgendwie den Fortschrittsdialog aktualisieren, um dem Benutzer einen wirklichen Fortschritt anstatt nur der dummy "Bitte warten ..." Nachricht zu zeigen. Kann ich irgendwie auf den Fortschrittsdialog von MyTask.doInBackground
zugreifen, wo alle Arbeit erledigt ist?
Wie ich verstehe, läuft es als separater Thread, also kann ich nicht mit Hauptaktivität von dort "sprechen" und deshalb verwende ich onPostExecute
, um das Ergebnis zurück zu drängen. Aber das Problem ist, dass onPostExecute
nur aufgerufen wird, wenn alle Arbeit bereits erledigt ist und ich den Fortschritt des Dialogs in der Mitte aktualisieren möchte.
Irgendwelche Tipps, wie das geht?
Uh, irgendwie verpasst, dass ein Teil in docs, danke! – Laimoncijus