onpostexecute - asynctask with progressdialog android example
ActualizaciĆ³n del diĆ”logo de progreso en Activity from AsyncTask (1)
AsyncTask tiene el método onProgressUpdate(Integer...)
que puede llamar a cada iteración, por ejemplo, o cada vez que se realiza un progreso durante doInBackground()
llamando a publishProgress()
.
Consulte los docs para obtener más detalles
En mi aplicación, estoy haciendo un trabajo intenso en AsyncTask
tal como sugieren los tutoriales de Android y mostrando un ProgressDialog
en mi actividad principal:
dialog = ProgressDialog.show(MyActivity.this, "title", "text");
new MyTask().execute(request);
donde luego, en MyTask
, MyTask
resultados nuevamente en la actividad:
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);
}
}
y en la publicación de resultados, en la actividad principal oculto el diálogo:
protected void postResult( Result res ) {
dialog.dismiss();
// do something more here with result...
}
Así que todo está funcionando bien aquí, pero me gustaría de alguna manera actualizar el diálogo de progreso para poder mostrarle al usuario un progreso real en lugar de un mensaje ficticio "Por favor, espere ...". ¿Puedo de alguna manera acceder al diálogo de progreso desde MyTask.doInBackground
, donde todo el trabajo está hecho?
Según tengo entendido, se ejecuta como un subproceso separado, por lo que no puedo "hablar" con la actividad principal desde allí y es por eso que utilizo onPostExecute
para onPostExecute
el resultado. Pero el problema es que se llama a onPostExecute
solo cuando todo el trabajo ya está hecho y me gustaría actualizar el progreso del diálogo en el medio de hacer algo.
¿Algún consejo sobre cómo hacer esto?