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

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

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

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

20.05.2014, 15:42. Просмотров 1349. Ответов 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();

.....
...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2014, 15:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Запуск нескольких AsyncTask (Программирование Android):

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

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

AsyncTask и get() - Программирование Android
Создаю асинхронный процесс, где в onPreExecute() запускаю анимированный ProgressDialog. После выполнения задачи нужно выполнить действия....

AsyncTask - Программирование Android
Использую AsyncTasc class MyT extends AsyncTask<Void, Void, Void> { @Override protected Void doInBackground(Void......

AsyncTask - Программирование Android
Привет. Знаю, что в AsyncTask doInBackground() обращатся к компонентам UI нельзя. Когда я пытаюсь обновить вывод (в EditText) в...

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

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

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

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

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

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

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

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

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

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

Цитата Сообщение от kaspersky Посмотреть сообщение
а когда поток выполняется он из пула самостоятельно очиститься ?
Да, да, всё верно
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.05.2014, 10:11
Привет! Вот еще темы с ответами:

AsyncTask и Jsoup - Программирование Android
Не работает вот такой код: package com.example.projecta; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import...

AsyncTask и SQLite - Программирование Android
Здравствуйте! У меня в приложении есть БД SQLite, при нажатие на кнопку загрузки, приложение начинает в базу вносить записи. Структура...

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

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


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

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
21.05.2014, 10:11
Ответ Создать тему
Опции темы

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