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

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

Войти
Регистрация
Восстановить пароль
 
TigRon4ik
2 / 2 / 0
Регистрация: 10.08.2015
Сообщений: 16
#1

Работа с потоками (AsyncTask) - Программирование Android

04.02.2016, 23:40. Просмотров 310. Ответов 5

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

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
AsyncTask asyncTask = new AsyncTask() {
            private String result;
            @Override
            protected Object doInBackground(Object[] params) {
                отправляем запрос 
                result = получаем ответ с сервера
                return null;
            }
            
 
            public String getResult() {
                return result;
            }
        }
asyncTask .execute;
asyncTask.getResult();
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2016, 23:40     Работа с потоками (AsyncTask)
Посмотрите здесь:

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

Работа с потоками - Программирование Android
Программа: парсер, по нажатию на кнопку, она начинает свою работу (конечно же в отдельном потоке). Получив данные с сайта, нам нужно эти...

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

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Lumber
99 / 99 / 37
Регистрация: 02.12.2015
Сообщений: 239
07.02.2016, 02:27     Работа с потоками (AsyncTask) #2
Цитата Сообщение от TigRon4ik Посмотреть сообщение
Но таким образом придется для каждого запроса писать отдельный класс.
Зачем? Не должно такого быть.
korshun84
21 / 76 / 17
Регистрация: 08.07.2014
Сообщений: 403
07.02.2016, 12:55     Работа с потоками (AsyncTask) #3
Service надо использовать, а не AsyncTask.
Pablito
2458 / 1903 / 591
Регистрация: 12.05.2014
Сообщений: 6,711
Завершенные тесты: 1
07.02.2016, 13:13     Работа с потоками (AsyncTask) #4
сервисы уже начали работать не в UI потоке?
а если в сервисе стартовать задачу то вопрос - зачем этот сервис нужен? масло-масляное

из того что написал ТС, очевидно, что надо продумать и переделать архитектуру программы
korshun84
21 / 76 / 17
Регистрация: 08.07.2014
Сообщений: 403
07.02.2016, 13:21     Работа с потоками (AsyncTask) #5
Цитата Сообщение от Паблито Посмотреть сообщение
сервисы уже начали работать не в UI потоке?
а если в сервисе стартовать задачу то вопрос - зачем этот сервис нужен? масло-масляное
Что навскидку приходит в голову - так это то, что AsyncTask зависим от контекста activity. Если при работе AsyncTask перевернуть экран, то контекст будет утерян. Проще говоря при работе с AsyncTask придется делать больше лишних телодвижений.
Ну и то, что отдельный экземпляр AsyncTask класса можно запустить только один раз, плюсом назвать нельзя.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.02.2016, 14:06     Работа с потоками (AsyncTask)
Еще ссылки по теме:

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

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
Pablito
2458 / 1903 / 591
Регистрация: 12.05.2014
Сообщений: 6,711
Завершенные тесты: 1
07.02.2016, 14:06     Работа с потоками (AsyncTask) #6

Не по теме:

это конечно не по теме, но лично я отключаю пересоздание активити при повороте экрана


и сам не люблю асинктаски, мне удобнее использовать что угодно, но не их )
например ExecutorService
для себя решил так - если надо что бы что-то выполнялось пока программа не запущена то сервис нужен, иначе - нет
Yandex
Объявления
07.02.2016, 14:06     Работа с потоками (AsyncTask)
Ответ Создать тему
Опции темы

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