Как ограничить количество потоков, запускаемых с помощью ASyncTask? - PullRequest
2 голосов
/ 19 марта 2011

У меня есть список со списком друзей на Facebook некоторых пользователей, в каждой строке показаны имя и фотография друга.Чтобы получить картинку из Facebook, я запускаю поток с помощью ASyncTask, следуя записи Жиля Дебунна «Многопоточность для производительности» .

Когда я прокручиваю список до конца, количество запущенных потоковможет быть огромным, что делает все очень медленным, пока все потоки не завершат свою задачу.

Как я могу ограничить количество потоков?

Спасибо

Julien

Ответы [ 2 ]

3 голосов
/ 19 марта 2011

Прямо сейчас, если вы не хотите ограничить себя уровнем API 11 (Android 3.0) и выше, вы не можете ограничить количество потоков, используемых AsyncTask. IIRC, он будет использовать до 20 потоков максимум.

Если вы хотите меньше этого, вам нужно будет создать собственный механизм пула потоков и использовать его вместо AsyncTask. Или клонируйте код из AsyncTask в свой собственный проект и измените характеристики его собственного пула потоков.

0 голосов
/ 19 марта 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...