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?

  • NetworkOnMainThreadException
  • Cómo manejar AsyncTask en ActionBarActivity Fragmentos cuando se utiliza ViewPager?
  • ¿Cuál es el uso de List <NameValuePair> o ArrayList <NameValuePair>
  • Android, ¿puedo poner AsyncTask en una clase separada y tener una devolución de llamada?
  • ¿Cómo utilizar AsyncTask para mostrar un ProgressDialog mientras realiza un trabajo de fondo en Android?
  • Android AsyncTask - Orden de ejecución
  • Adición de una fuente personalizada al tema en Android
  • Com.google.firebase.database.DatabaseException: Las llamadas a setPersistenceEnabled () deben realizarse antes de cualquier otro uso de la instancia de FirebaseDatabase
  • Cómo establecer maxLines y ellipsize de un TextView al mismo tiempo
  • FirebaseAuth.getCurrentUser () devuelve null DisplayName
  • ¿Cómo mostrar una imagen a pantalla completa?
  • Mostrar la fecha / hora UTC en la fecha / hora de acuerdo con la zona horaria actual
  • 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.