¿Puede OnPostExcecute método en AsyncTask RETURN valores?

Estoy desarrollando una aplicación de Android que requiere el uso de AsyncTask para la conexión de red. Lo llamé desde el hilo principal. Así que el método doInBackground se ejecuta y luego vuelve al método onPostExecute . Después de ejecutar el método onPostExecute, quiero devolver un valor a la actividad desde donde fue llamado, ya que tengo que realizar alguna operación en esa actividad particular que requiere el valor devuelto por el método onPostExecute. ¿Cómo puedo solucionar esto? ¿Cómo devuelvo un valor de onPostExecute?

Gracias por adelantado

AsyncTask, como su nombre indica, se ejecuta de forma asincrónica con el subproceso de UI, el método onPostExecute se llamará en algún momento en el futuro, cuando doInBackground finalizado. No nos importa cuando onPostExecute método será llamado (en realidad no hay manera de decir en el tiempo de construcción del proyecto), lo único que importa es onPostExecute método está garantizado para ser llamado correctamente por el marco subyacente en algún momento en el futuro. Así que el propósito del método onPostExecute es procesar el resultado devuelto desde el subproceso de trabajo, esto es también por qué el único argumento del método onPostExecute es el resultado devuelto por el método doInBackground.

Tengo que realizar alguna operación en esa actividad particular que requiere el valor devuelto por el método onPostExecute. ¿Cómo puedo solucionar esto?

De causa, puede crear algunas variables de instancia (o utilizar el patrón listerner) en la clase de actividad almacenar el resultado cuando se devuelve y listo en el método onPostExecute. El problema es que nunca se sabe cuándo este resultado está listo fuera del método onPostExecute en el tiempo de construcción del proyecto, ya que se determina realmente en el tiempo de ejecución de la aplicación. A menos que escriba algún mecanismo de espera que escuche continuamente el resultado, lo que resulta en sacrificar el beneficio de AsyncTask, por ejemplo, la API incorporada AsyncTask.get () que hace que AsyncTask funcione de forma síncrona con el subproceso de la interfaz de usuario y devuelva el resultado a la actividad.

La mejor práctica es cambiar su diseño y mover el código de operación que requiere el resultado devuelto de AsyncTask en onPostExecute método. espero que esto ayude.

Puede utilizar getter y setter para recuperar el valor de AsyncTask

 public class MainActivity extends Activity { public String retunnumfromAsyncTask; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layouttest); new Asyntask(this).execute(); } public class Asyntask extends AsyncTask<Void, Void, String> { private final Context Asyntaskcontext; public Asyntask(Context context){ Asyntaskcontext = context; } @Override protected void onPostExecute(String result) { MainActivity mainactivity = (MainActivity) Asyntaskcontext; mainactivity.retunnumfromAsyncTask = result; super.onPostExecute(result); } } } 

Simplemente escriba la clase AsyncTask como clase interna en su actividad y, a continuación, declare el valor que desea devolver como global. ¿Fue de ayuda para ti?

  • Retrofit 2 mejor práctica para android: solicitud asincrónica o solicitud síncrona en AsyncTask?
  • ¿Cómo ejecutar algún código en el asíncrono de la interfaz de usuario de Android?
  • AsyncTask durante más de unos segundos?
  • Android runOnUiThread / AsyncTask no puede resolver CalledFromWrongThreadException
  • ¿Cómo manejar sin conexión a Internet y pérdida en Android?
  • No se puede reemplazar el método onPostExecute () en AsyncTask Class o obtenerlo para activar
  • Cómo gestionar diferentes tareas que deben ser llamadas por AsyncTask
  • Actualizar TextView desde Async Tarea que utiliza el diálogo de programa personalizado
  • Cómo pasar variables dentro y fuera de AsyncTasks?
  • Cargando datos de forma eficaz en RecycleView
  • ¿Cómo comunicarse entre el servicio de mensajería de Firebase y la actividad? Androide
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.