AsyncTask de Android

Podría alguien aconsejar sobre lo siguiente: Estoy tratando de ejecutar código de la página de ayuda de Android, pero no funciona para mí:

public class DownloadFilesTask extends AsyncTask<String, Integer, Long> { protected Long doInBackground(String... urls) { Log.e("TuneWiki", "Exec"); return 1l; } @Override protected void onPostExecute(Long result) { Log.e("TuneWiki", "Post"); } } 

Cuando ejecuto la tarea, doInBackground se invoca bien, pero onPostExecute nunca se invoca 🙁

Probado en Milestone con 2.1 OS

Gracias a todos – encontré la razón. AsyncTask deja de funcionar por alguna razón si se inició una gran cantidad de subprocesos incluso si todos los subprocesos se completaron correctamente.

No es una buena idea usar AsyncTasks para descargas de archivos (como el nombre de su AsyncTask sugiere). AsyncTasks no debe utilizarse para operaciones de larga ejecución como la creación de redes. De hecho AsyncTask tiene dos cuestiones principales que están relacionadas:

  • Están mal vinculados al ciclo de vida de la actividad
  • La creación de fugas de memoria con mucha facilidad.

Dentro de la aplicación RoboSpice Motivations ( disponible en Google Play ) respondemos a esta pregunta en detalle. Ofrecerá una visión en profundidad de AsyncTasks, Loaders, sus características y desventajas y también le presentará una solución alternativa para las solicitudes de red: RoboSpice.

Incluso proporcionamos una infografía para explicar este asunto. Para decirlo en pocas palabras

  • AsyncTasks son defectuosos, ya que están mal vinculados a Activity Lifecycle y crear fugas de memoria
  • Los cargadores son bastante buenos para lo que han sido diseñados para: acceder a los cursores de las bases de datos de Sqlite, pero no ofrecen ningún soporte para la creación de redes. Ellos son la herramienta equivocada para esto.
  • RoboSpice ejecuta las solicitudes de red en un servicio, las descargas se ejecutan en un Servicio Android, la memoria está bien administrada e incluso proporciona soporte para escribir solicitudes REST.

Le animo a descargar la aplicación RoboSpice Motivations , realmente explica esto en profundidad y proporciona muestras y demostraciones de las diferentes maneras de hacer algunas operaciones de fondo.

  • ¿Cuál es la forma más eficiente en Android de llamar a las llamadas de la API Web HTTP que devuelven una respuesta JSON?
  • Android: SSLException Error de E / S durante la llamada al sistema, conexión agotada
  • AsyncTask dentro de un método estático - Buena práctica de codificación?
  • Lanzar una excepción en doInBackground y capturar en onPostExecute
  • Cómo iniciar correctamente la actividad de PostExecute en Android?
  • ¿Por qué esta tarea de fondo falla con una excepción fatal?
  • Múltiples parámetros de entrada para el método execute () de AsyncTask
  • ¿Cuáles son las ventajas / desventajas de pasar argumentos al constructor AsyncTask?
  • Cómo crear AsyncTasks reutilizables en android?
  • ¿Cómo devuelvo un booleano de AsyncTask?
  • La actividad que utiliza ViewPager, PagerAdapter y AsyncTask provoca una vista en blanco
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.