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

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

Войти
Регистрация
Восстановить пароль
 
mks81
7 / 7 / 0
Регистрация: 12.10.2012
Сообщений: 51
#1

AsincTask нужен совет! - Android

24.10.2012, 15:53. Просмотров 579. Ответов 4
Метки нет (Все метки)

Написал приложение, в кратце алгоритм следующий:
1. MainActivity, состоит из ListView и двух кнопок. Первая кнопка добавляет строку в ListView, которая содержит некую формулу для последующей работы с ней. Вторая TogleButton - вкл/выкл, которая запускает, либо останавливает сервис, который выполняет дальнейшую работу.
2. MainService, запускает потоки используя формулы из ListView, сколько формул, столько и запускается потоков AsincTask, каждый новый поток добавляется в ArrayList<AsincTask> для удобства обращения к ним при выключении сервиса.
Все бы ничего, да вот работают почему-то только пять потоков, добавляю шестой, работают только 5 предыдущих...
Вопросы:
1. Почему работают только 5 потоков? Это ограничение или какая-то другая проблема?(при добавлении более 5 потоков свободную память проверял, ее еще предостаточно)
2. На android пересел недавно с Java, поэтому хотелось бы уточнить по поводу "пряморукости" данного алгоритма при работе на API 7, android 2.1.
P.S. переход на более позднюю android не желателен, т.к. необходимо захватить максимальный диапазон поддерживающих устройств.
Заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2012, 15:53     AsincTask нужен совет!
Посмотрите здесь:

Рисование пазлов, нужен совет Android
Нужен совет Android
Android Информация и совет
Android Нужен совет с программой с использованием карт
Совет по Eclipse Android
Android Ребят нужен технический совет по созданию приложения для для вывода ошибок с сервера
Получение данных с сайта. Нужен совет Android
Android Нужен совет в поиске неизвестной ошибки
Нужен ваш совет. Игра или программа под Андроид Android
Нужен совет с облачными технологиями Android
Нужен вас совет Android
Android Нужен совет по правильной логике для авторизации пользователя при запуске приложения

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
24.10.2012, 17:26     AsincTask нужен совет! #2
попробуй как-то так
((ThreadPoolExecutor)AsyncTask.THREAD_POOL_EXECUTOR).setCorePoolSize(100);

Добавлено через 10 секунд
или что-то в этом роде.
YAUHEN
146 / 128 / 6
Регистрация: 29.07.2008
Сообщений: 506
24.10.2012, 21:23     AsincTask нужен совет! #3
0. почитайте тут
1. убедитесь что вам необходимо использовать AsyncTask(если вам не надо обновлять UI из потока в котором выполняется ваша логика - вам не обязательно использовать AsyncTask)

лично я почти никогда не пользуюсь асинктасками а вместо них предпочитаю хандлеры.
возможное решение вашей проблемы - хандлер с лупером от мэйнтрэда + ExecutorService (посмотрите как им пользоваться) + FutureTask/Callable /Runnable/Future (зависит от того что вам надо)
mks81
7 / 7 / 0
Регистрация: 12.10.2012
Сообщений: 51
25.10.2012, 09:37  [ТС]     AsincTask нужен совет! #4
Цитата Сообщение от YAUHEN Посмотреть сообщение
0. почитайте тут
1. убедитесь что вам необходимо использовать AsyncTask(если вам не надо обновлять UI из потока в котором выполняется ваша логика - вам не обязательно использовать AsyncTask)
Вообще, в конечной версии приложения, UI из потоков обновлять не надо, но пока я его тестирую, мне это необходимо для мониторинга и выявления багов...
YAUHEN
146 / 128 / 6
Регистрация: 29.07.2008
Сообщений: 506
25.10.2012, 10:31     AsincTask нужен совет! #5
Цитата Сообщение от mks81 Посмотреть сообщение
для мониторинга и выявления багов
может стоит задуматься о логировании? это не внесёт никакой дополнительно логики и если вам надо, то легко можно будет удалить из кода.

В любом случае из хандлера можно обновлять UI. Да и вообще, если взять пример: листвью в каждом из которых картинка "лениво" подгружаемая из интернета. Я не думаю что кто то будет реализовывать это используя обойму асинктасков а ведь ситуация на сколько я понимаю похожа на вашу по механизму работы.
Yandex
Объявления
25.10.2012, 10:31     AsincTask нужен совет!
Ответ Создать тему
Опции темы

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