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

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

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

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

04.02.2016, 23:40. Просмотров 340. Ответов 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();
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2016, 23:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с потоками (AsyncTask) (Программирование Android):

Работа с 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......

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

5
Lumber
99 / 99 / 37
Регистрация: 02.12.2015
Сообщений: 239
07.02.2016, 02:27 #2
Цитата Сообщение от TigRon4ik Посмотреть сообщение
Но таким образом придется для каждого запроса писать отдельный класс.
Зачем? Не должно такого быть.
0
korshun84
25 / 80 / 19
Регистрация: 08.07.2014
Сообщений: 429
07.02.2016, 12:55 #3
Service надо использовать, а не AsyncTask.
0
Pablito
2525 / 2004 / 624
Регистрация: 12.05.2014
Сообщений: 7,030
Завершенные тесты: 1
07.02.2016, 13:13 #4
сервисы уже начали работать не в UI потоке?
а если в сервисе стартовать задачу то вопрос - зачем этот сервис нужен? масло-масляное

из того что написал ТС, очевидно, что надо продумать и переделать архитектуру программы
0
korshun84
25 / 80 / 19
Регистрация: 08.07.2014
Сообщений: 429
07.02.2016, 13:21 #5
Цитата Сообщение от Паблито Посмотреть сообщение
сервисы уже начали работать не в UI потоке?
а если в сервисе стартовать задачу то вопрос - зачем этот сервис нужен? масло-масляное
Что навскидку приходит в голову - так это то, что AsyncTask зависим от контекста activity. Если при работе AsyncTask перевернуть экран, то контекст будет утерян. Проще говоря при работе с AsyncTask придется делать больше лишних телодвижений.
Ну и то, что отдельный экземпляр AsyncTask класса можно запустить только один раз, плюсом назвать нельзя.
0
Pablito
2525 / 2004 / 624
Регистрация: 12.05.2014
Сообщений: 7,030
Завершенные тесты: 1
07.02.2016, 14:06 #6

Не по теме:

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


и сам не люблю асинктаски, мне удобнее использовать что угодно, но не их )
например ExecutorService
для себя решил так - если надо что бы что-то выполнялось пока программа не запущена то сервис нужен, иначе - нет
0
07.02.2016, 14:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.02.2016, 14:06
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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