Cómo pasar el resultado del método onpostexecute asynctask en la actividad principal android

Estoy desarrollando una aplicación en la que necesito enviar el valor del resultado del método onPostExecute del asynctask a la actividad anterior, es decir, la actividad en la que se está llamando la tarea aync.pls poner algunos códigos. Cualquier ayuda es apreciada

Dos caminos:

  1. Declara la clase que extiende AsyncTask como clase privada en la actividad de los padres
  2. Pass Handler o Actividad como param de la clase extendiendo AsyncTask

Si yo fuera tú, seguiría la primera opción.
Mira DOCS :

class MyActivitySubclass extends Activity { function runOnPostExecute(){ // whatever } private class MyTask extends AsyncTask<Void, Void, Void> { void doInBackground(Void... params){ // do your background stuff } void onPostExecute(Void... result){ runOnPostExecute(); } } } 

Nota 1

El código colocado en el cuerpo de la función onPostExecute ya se ejecuta en el hilo de actividad, solo debes mencionar que this MyTask.this clave lleva a MyTask.this y no MyActivitySubclass.this

Bueno, si tu AsyncTask es una clase interna, podrías simplemente llamar a un método en tu actividad desde onPostExecute() :

 public class MyActivity extends Activity { public void someMethod(String someParam) { // do something with string here } public class InnerTask extends AsyncTask<...> { protected void onPostExecute(result) { someMethod(Send parameters); } } } 

El método onPostExecute se dispara en el subproceso principal de la interfaz de usuario, por lo que ya se ha realizado algo en el llamante AsyncTasks.

http://developer.android.com/reference/android/os/AsyncTask.html

Dispara un evento en OnPostExecute.

Es un complemento a la respuesta de Marek Sebera, señaló a utilizar un controlador. Para mantener el código simple e intuitivo utilizar una interfaz. Esto no es un concepto alienígena, lo usamos todo el tiempo para funciones de devolución de llamada (por ejemplo: OnClickListner etc.). El código se vería algo así.

  public class InnerTask extends AsyncTask<...> { interface ResultHandler { void gotResult(<> result); } private ResultHandler myResult; //constructor public InnerTask(....params...,ResultHandler callback) { ... this.myResult = callback; } protected void onPostExecute(<>result) { ... myResult.gotResult(result); } } public class MyActivity extends Activity implements InnerTask.ResultHandler { @Override protected void onCreate(Bundle savedInstanceState) { //do something //if you want the InnerTask to execute here InnerTask i = new InnerTask(....params...,this); //send 'this' as parameter i.execute(); } @Override public void gotResult(<> result) { //from onPostExecute } } 

Si queremos usar la misma clase AsynTask en varios sitios, podemos usar este tipo de implementación en lugar de usar implementación de clases anidadas.

  • Alzar un brindis desde AsyncTask
  • ¿Cómo se rompió este código sincronizado?
  • ¿Cómo actualizar ListView al desplazarse mientras recupera datos del servidor en Android?
  • Se produjo un error al ejecutar doInBackground () android
  • Evitar reiniciar fragmento asynctask en cambio de orientación de pantalla
  • No se puede llamar a runOnUiThread en un subproceso desde dentro de un servicio
  • AscyncTask - No en el hilo principal
  • Compruebe si trabaja AsyncTask
  • Error en la conexión FTP de Android
  • Cómo pasar el parámetro de tipo byte a la función AsyncTask?
  • Android Asynctask vs Runnable vs timertask vs Servicio
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.