Intereting Posts
Проверьте метод onReceivedSslError () WebViewClient, если сертификат подписан из определенного самозаверяющего ЦС Библиотека пользовательского интерфейса проверки формы Android Изменить ориентацию без вызова onCreate Делают ли темы добавление большого количества накладных расходов в приложение? Как получить доступ к новому API Gmail из моего приложения для Android? Не удалось скачать Android Studio Android getMenuInflater () в подклассе фрагмента – не может разрешить метод Android – Intent Filter? Как уменьшить размер большого размера до размера миниатюр в android Построить ошибки с зависимостью XML с java-объектом в build.gradle для модификации Установить высоту значка панели действий, чтобы соответствовать высоте панели действий Как использовать «репо» для клонирования минимального источника андроида? Android API Google Plus – PeopleApi.loadConnected возвращает 0 человек Определение доступной памяти на Android Библиотека материалов – предотвращение отклонения / закрытия диалога on onPositive function call

Нити 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()); 

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