Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
ILNAR_93
Android
219 / 219 / 22
Регистрация: 19.01.2013
Сообщений: 1,656
Записей в блоге: 3
#1

Запуск нескольких AsyncTask - Программирование Android

20.05.2014, 15:42. Просмотров 1291. Ответов 5
Метки нет (Все метки)

Есть ListView там чекбоксы, при нажатии на чекбох запускается поток..

Java
1
2
AsyncTaskWASAQ  task = new AsyncTaskWASAQ();
task.execute();
если пользователь сразу выберет несколько пунктов то запустятся несколько одинаковых потоком т.е. несколько раз выполнится след. код
Java
1
2
AsyncTaskWASAQ  task = new AsyncTaskWASAQ();
task.execute();

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

как это можно по умному сделать ? так чтобы активной всегда оставался только один поток, (id каждому потоку давать чтоли ?))))) )

и почему он только не пересоздается ? все время же task.execute(); а тут как будто
создается
task.execute1();
task.execute2();
task.execute3();

.....
...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2014, 15:42     Запуск нескольких AsyncTask
Посмотрите здесь:

Запуск AsyncTask при повороте девайса - Программирование Android
Здравствуйте, мне нужно запустить AsyncTask при повороте девайса... код есть но он не работает...( помогите пожалуйста...) ..... ...

Отмена AsyncTask - Программирование Android
Привет. Есть такой код: @Override protected Void doInBackground(Void... params) { try { Interpret(Source.get()); }...

Exception в AsyncTask - Программирование Android
Доброго всем. Проблема вот в чем: периодически во время выполнения одного из потоков в AsyncTask вылетает следующее: 04-21...

Не работает AsyncTask - Программирование Android
Не работает AsyncTask , вот код: private void registerInBackground() { new AsyncTask() { @Override ...

Работа с AsyncTask - Программирование Android
Попробовал использовать AsyncTask и возник вопрос. У меня есть несколько ф-й, которые парсят текстовые файлы и заполняют таблицы БД. ...

AsyncTask+CheckBox - Программирование Android
Здравствуйте, интересует вопрос нужно в функцию AsyncTask послать несколько строк, в зависимости какие Чекбоксы чекнуты. Ну например: ...

AsyncTask тормозит - Программирование Android
Подскажите пожалуйста, делалю загрузку данных с сервера через asyncTask и возвращаются результат, а дальше делаю обработку этих данных во...

Отмена AsyncTask из FragmentDialog - Программирование Android
Здравствуйте, у меня задача отменить выполнение AsyncTask`a из диалога, который создается в этом таске. new AsyncTask<Void, Void, Void>()...

Работа с потоками (AsyncTask) - Программирование Android
Здравствуйте. Мне нужно отослать post запрос на сервер, но так как грузить GUI нельзя (что и логично) - обволакиваю весь код работы с...

Dropbox: syncNowAndWait в AsyncTask - Программирование Android
В doInBackground() выгружаю данные на Dropbox, отображая ProgressDialog. По кнопке Cancel (в диалоге) срабатывает событие onCancelled(). ...

FATAL EXCEPTION: AsyncTask #3 - Программирование Android
Не могу понять в чем проблема гуглил ничего не смог найти (я новичек уж извините)). 01-21 12:29:10.019:...

AsyncTask в Fragment и viewPager - Программирование Android
У меня есть ViewPager который состоит из двух листающихся экранов, есть код фрагмента который запускается в этом viewPager (как правильно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1567 / 1309 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
20.05.2014, 15:51     Запуск нескольких AsyncTask #2
kaspersky, если посмореть исходник асинктаски, то одновременно может выполняться только 1 асинктаска, если она была вызвана методом execute(). Все остальные будут становится в очередь. Опасно появлением RejectedExecutionException из-за переполнения пула 128/10.

Вам надо написать какой-нибудь механизм, который будет ожидать допустим 3 секунды с последнего действия пользователя. Если за эти 3 секунды ничего юзер не добавил/убрал - запускаем, если всё же добавил - тогда сбрасываем таймер снова на 0.
ILNAR_93
Android
219 / 219 / 22
Регистрация: 19.01.2013
Сообщений: 1,656
Записей в блоге: 3
20.05.2014, 16:00  [ТС]     Запуск нескольких AsyncTask #3
YuraAAA, а у таска нету такого метода для автоматического завершения ? или чтобы жестко его завершать ?

я бы работал с task cansel но у меня в таск только одна объемная функция выполняется и все и я не как не проверю cansel

Цитата Сообщение от YuraAAA Посмотреть сообщение
который будет ожидать допустим 3 секунды
этот метод хотел использовать в крайней мере если не найду другой выход, т.к. список объемный (Listview) и пользователь с верху может 3 пункта выбрать и вниз крутить а поток там уже начнется а потом он с низу еще выберет и тогда поток все равно опять начнется (вот у меня уже 2 потока)

Добавлено через 1 минуту
Цитата Сообщение от YuraAAA Посмотреть сообщение
Опасно появлением RejectedExecutionException
типо если много потоков одновременно запускать ? крах приложения ?
YuraAAA
1567 / 1309 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
20.05.2014, 16:03     Запуск нескольких AsyncTask #4
kaspersky, если более 128 - крэш. Переполнение пула потоков.

Я лично не вижу другого выхода, кроме как механизм отложенного выполнения. Либо, как вариант, кнопка подтверждения выбора.

А что делает поток? В интернет лезет?
ILNAR_93
Android
219 / 219 / 22
Регистрация: 19.01.2013
Сообщений: 1,656
Записей в блоге: 3
21.05.2014, 09:00  [ТС]     Запуск нескольких AsyncTask #5
Цитата Сообщение от YuraAAA Посмотреть сообщение
А что делает поток? В интернет лезет?
Да, скачивает инфу по выбранным объектам

Добавлено через 2 минуты
Цитата Сообщение от YuraAAA Посмотреть сообщение
если более 128 - крэш
а когда поток выполняется он из пула самостоятельно очиститься ?

т.е. по мере выполнения потоков они будут само уничтожаться ? или пока мусоросборщик не пройдет он будет в пуле ?
YuraAAA
1567 / 1309 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
21.05.2014, 10:11     Запуск нескольких AsyncTask #6
kaspersky,
Цитата Сообщение от kaspersky Посмотреть сообщение
Да, скачивает инфу по выбранным объектам
Советую всё же какую-нибудь кнопку подтверждения.

Цитата Сообщение от kaspersky Посмотреть сообщение
а когда поток выполняется он из пула самостоятельно очиститься ?
Да, да, всё верно
Yandex
Объявления
21.05.2014, 10:11     Запуск нескольких AsyncTask
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru