Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


OnPostExecute en AsyncTask cancelado

¿ onPostExecute ejecuta onPostExecute si se ha cancelado el AsyncTask ?

Si se ejecuta, ¿es seguro decir que siempre debería preguntar si la tarea ha sido cancelada ( isCancelled ) al principio de onPostExecute , antes de hacer algo más?

  • Cómo crear un hilo Looper, a continuación, enviar un mensaje de inmediato?
  • Necesita un ejemplo que muestre cómo realizar solicitudes HTTP asíncronas
  • ¿Cómo utilizar ExecutorService con Android AsyncTask?
  • Actualización de la interfaz de usuario con Runnable y postDelayed no funciona con la aplicación de temporizador
  • Acceso al dominio desde un subproceso incorrecto Android
  • Uso adecuado de yieldIfContendedSafely () en una aplicación multithreaded de Android
  • ¿En qué hilo se ejecuta onReceive () de un BroacastReceiver registrado con LocalBroadcastManager?
  • ¿Cómo se utiliza un TimerTask para ejecutar un hilo?
  • 3 Solutions collect form web for “OnPostExecute en AsyncTask cancelado”

    El comportamiento documentado de onPostExecute en cancel () se cambió entre Android 2 y Android 4.

    Android 2.3.7 onPostExecute :

    Se ejecuta en el subproceso de interfaz de usuario después de doInBackground. El resultado especificado es el valor devuelto por doInBackground o null si la tarea se canceló o se produjo una excepción.

    Android 4.0.1 onPostExecute :

    Se ejecuta en el subproceso de interfaz de usuario después de doInBackground. El resultado especificado es el valor devuelto por doInBackground. Este método no se invocará si la tarea se canceló.

    Por lo tanto, si todavía está buscando dispositivos Android 2, debe asumir que se llamará onPostExecute y en onPostExecute compruebe si hay resultado nulo.

    De mi experiencia el onPostExecute () no se invoca realmente cuando la tarea se cancela. Sin embargo, puede ser posible cancelar la tarea después de finalizar la tarea doInBackground () pero antes de invocar a onPostExecute (), en este caso se invoca realmente onPostExecute (). Por lo tanto, para estar seguro, llamo el método isCancelled () en onPostExecute () y simplemente "return" si la tarea ha sido cancelada. Esto funciona para mi.

    Después de comprobar el código fuente AsyncTask parece que onPostExecute se invoca incluso si la tarea se cancela. Sin embargo, antes de llamar onPostExecute el resultado se establece en null (?) Si la tarea se ha cancelado.

    Editar: @bain proporciona una respuesta actualizada.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.