Проблема с AsyncTask от Android

Кто-нибудь может посоветовать следующее: я пытаюсь выполнить код на странице справки Android, но для меня это не работает:

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"); } } 

Когда я выполняю задачу, doInBackground вызывается отлично, но onPostExecute никогда не вызывается 🙁

Протестировано на вехе с 2.1 ОС

Спасибо всем – я нашел причину. По какой-то причине AsyncTask перестает работать, если было запущено много потоков, даже если все потоки были успешно завершены.

Не рекомендуется использовать AsyncTasks для загрузки файлов (как следует из названия вашего AsyncTask). AsyncTasks не следует использовать для длительных операций, таких как сетевое взаимодействие. Действительно, у AsyncTask есть две основные проблемы:

  • Они плохо привязаны к жизненному циклу деятельности
  • Утечка памяти создания очень легко.

В приложении RoboSpice Motivations ( доступно в Google Play ) мы подробно ответим на этот вопрос. Он даст подробный обзор AsyncTasks, Loaders, их функций и недостатков, а также представит вам альтернативное решение для сетевых запросов: RoboSpice.

Мы даже представили инфографику, чтобы объяснить эту проблему. Чтобы сказать это в нескольких словах

  • AsyncTasks ошибочны, поскольку они плохо привязаны к жизненному циклу активности и создают утечки памяти
  • Погрузчики довольно хороши для того, для чего они были разработаны: доступ к курсорам баз данных Sqlite, но не предлагает поддержки для сетей. Это неправильный инструмент для этого.
  • RoboSpice выполняет сетевые запросы в службе, ваши загрузки выполняются в Android-сервисе, хорошо управляемая память и даже обеспечивает поддержку для записи запросов REST.

Я рекомендую вам загрузить приложение RoboSpice Motivations , оно действительно объясняет это в глубину и предоставляет образцы и демонстрации различных способов выполнения некоторых фоновых операций.