AsyncTask, RejectedExecutionException и предел задачи

Я выбираю много миниатюр от удаленного сервера и отображаю их в представлении сетки, с помощью AsyncTask. Проблема, мое представление сетки отображает 20 миниатюр за один раз, так, чтобы создал 20 AsyncTasks и запустился 20, выполняется, один на миниатюру.

Я добираюсь RejectedExecution исключение в моем коде. Я вспоминаю чтение где-нибудь, что существует предел количеству задач, которые AsyncTask может иметь в его очереди за один раз, я мог бы поражать это. Эта панель была снята?

Существует ли способ увеличить этот предел? Действительно ли безопасно просто проигнорировать это исключение? (при наличии пустого catch(RejectedException e){} блок?)

Я выполняю этот код эмулятора Android 1.6, и уровень API в моем коде (minSDKVersion 3). [РЕДАКТИРОВАНИЕ: Добавленный SDK и информация об уровне API]

15
задан Samuh 22 March 2010 в 15:23
поделиться

1 ответ

Я помню, как где-то читал, что - это ограничение на количество задач, которые AsyncTask может иметь в своей очереди в время, я мог бы ударить это. Была ли поднята эта планка?

AsyncTask , похоже, в настоящее время поддерживает 10 потоков и глубину рабочей очереди 10. Теоретически это будет поддерживать только 20 элементов ... если ничто другое не использует ] AsyncTask .

Есть ли способ увеличить это ограничение?

Возьмите исходный код, измените его, поместите в свой собственный пакет и используйте его. Я сделал это с помощью моего AsyncTaskEx , хотя он основан на исходном коде Android 1.5.

Можно ли просто проигнорировать это исключение?

Ваша работа не будет помещена в очередь на выполнение. «Безопасно» ли это - решать вам. Мне не известно о каких-либо других воздействиях на инфраструктуру AsyncTask .

17
ответ дан 1 December 2019 в 02:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: