Нити AsyncTask никогда не умирают

Я использую AsyncTask s для извлечения данных в ответ на нажатие кнопки пользователем. Это хорошо работает и поддерживает взаимодействие интерфейса при извлечении данных, но когда я проверил, что происходит в отладчике Eclipse, я узнал, что каждый раз, когда создавалась новая AsyncTask (что довольно часто, потому что их можно использовать только Один раз), новый поток создавался, но никогда не прерывался.

Результатом является большое количество потоков AsyncTask просто сидят там. Я не уверен, что это проблема на практике или нет, но я бы очень хотел избавиться от этих дополнительных потоков.

Как я могу убить эти потоки?

Solutions Collecting From Web of "Нити AsyncTask никогда не умирают"

AsyncTask управляет пулом потоков, созданным с помощью ThreadPoolExecutor . Он будет иметь от 5 до 128 потоков. Если имеется более 5 потоков, эти дополнительные потоки будут удерживаться не более 10 секунд перед удалением. (Примечание: эти цифры относятся к видимому в настоящее время открытому исходному коду и отличаются версией Android).

AsyncTask только потоки AsyncTask .

В дополнение к ответу CommonsWare:

В настоящее время я использую Android 2.2, и мое приложение использует не более одной AsyncTask в любое время, но я создаю новую каждые x минут. Сначала появляются новые потоки AsyncTask (новый поток для новой AsyncTask), но после 5 потоков (как упоминалось в CommonsWare) они просто остаются видимыми в окне отладки и снова используются, когда нужны новые потоки AsyncTask. Они просто остаются там, пока отладчик не отключится.

Тот же симптом здесь. В моем случае потоки повесились вокруг после того, как я убил активность, и я надеялся, что приложение полностью закрыться. Проблема частично решена с использованием однопоточного исполнителя:

  myActiveTask.executeOnExecutor(Executors.newSingleThreadExecutor()); 

Это заставило поток исчезнуть после завершения его работы.