Я выбираю много миниатюр от удаленного сервера и отображаю их в представлении сетки, с помощью AsyncTask. Проблема, мое представление сетки отображает 20 миниатюр за один раз, так, чтобы создал 20 AsyncTasks и запустился 20, выполняется, один на миниатюру.
Я добираюсь RejectedExecution
исключение в моем коде. Я вспоминаю чтение где-нибудь, что существует предел количеству задач, которые AsyncTask может иметь в его очереди за один раз, я мог бы поражать это. Эта панель была снята?
Существует ли способ увеличить этот предел? Действительно ли безопасно просто проигнорировать это исключение? (при наличии пустого catch(RejectedException e){}
блок?)
Я выполняю этот код эмулятора Android 1.6, и уровень API в моем коде (minSDKVersion 3). [РЕДАКТИРОВАНИЕ: Добавленный SDK и информация об уровне API]
Я помню, как где-то читал, что - это ограничение на количество задач, которые AsyncTask может иметь в своей очереди в время, я мог бы ударить это. Была ли поднята эта планка?
AsyncTask
, похоже, в настоящее время поддерживает 10 потоков и глубину рабочей очереди 10. Теоретически это будет поддерживать только 20 элементов ... если ничто другое не использует ] AsyncTask
.
Есть ли способ увеличить это ограничение?
Возьмите исходный код, измените его, поместите в свой собственный пакет и используйте его. Я сделал это с помощью моего AsyncTaskEx
, хотя он основан на исходном коде Android 1.5.
Можно ли просто проигнорировать это исключение?
Ваша работа не будет помещена в очередь на выполнение. «Безопасно» ли это - решать вам. Мне не известно о каких-либо других воздействиях на инфраструктуру AsyncTask
.