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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
PYPS
51 / 50 / 7
Регистрация: 12.07.2011
Сообщений: 542
Завершенные тесты: 3
#1

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

01.04.2014, 14:53. Просмотров 1131. Ответов 13
Метки нет (Все метки)

Использую AsyncTasc

Java
1
2
3
4
5
6
7
8
9
class MyT extends AsyncTask<Void, Void, Void>
    {
 
        @Override
        protected Void doInBackground(Void... params) {
            Zapros_na_server();  
            return null;
        }
    }
Java
1
 Zapros_na_server();// выполняются GET запросы
Если сервер не доступен как вывести сообщение пользователю из AsyncTasc?

Я понимаю что нужно Toast выводить в
Java
1
2
3
protected void onPostExecute(Void result)
{///Toast
}
Но как туда передать что ошибка именно из за того что сервер не доступен ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2014, 14:53     AsyncTask
Посмотрите здесь:

Запуск нескольких AsyncTask - Программирование Android
Есть ListView там чекбоксы, при нажатии на чекбох запускается поток.. AsyncTaskWASAQ task = new AsyncTaskWASAQ(); task.execute(); ...

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

Ожидание завершения AsyncTask - Программирование Android
Имеется класс &quot;расширяющий&quot; AsyncTask. Как я понимаю при создании объекта этого класса создается новый поток который выполняется...

AsyncTask и чтение XML - Программирование Android
Написал следущее: Но после нажатия на кнопку таск подвисает и через пару секунд приложение аварийно закрывается. ощибки из лога в...

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

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

Заполнение ListView в AsyncTask - Программирование Android
Нужно заполнить ListView картинками, которые скачиваются в AsyncTask с помощью Picasso. Картинки скачиваются нормально, ArrayList и...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1567 / 1309 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
01.04.2014, 15:20     AsyncTask #2
PYPS, как вариант:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class MyT extends AsyncTask<Void, Void, Void> {
        
        private Throwable throwable;
 
        @Override
        protected Void doInBackground(Void... voids) {
            try {
                doRequest();
            } catch (IOException e) {
                throwable = e;
            }
            return null;
        }
 
        @Override
        protected void onPostExecute(Void aVoid) {
            super.onPostExecute(aVoid);
            if (throwable != null) {
                if (throwable instanceof ConnectTimeoutException) {
                    Toast.makeText(............)
                }
            }
        }
 
        private void doRequest() throws IOException{
            //TODO something request
        }
    }
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
01.04.2014, 16:44     AsyncTask #3
Еще можно использовать обычный Tread и выкидывать сообщение об ошибке в методе runOnUiThread
YuraAAA
1567 / 1309 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
01.04.2014, 17:25     AsyncTask #4
KillAndEat, Thread я бы порекомендовал использовать на платформах ниже API 11. Так как до 11 апи может исполнятся только 1 AsyncTask одновременно.
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
01.04.2014, 17:34     AsyncTask #5
YuraAAA, мне просто таски никогда не нравились) по этому по возможности нити использую)
YuraAAA
1567 / 1309 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
01.04.2014, 17:39     AsyncTask #6
KillAndEat, а Loader пробовал? http://developer.android.com/guide/c...s/loaders.html
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
01.04.2014, 17:45     AsyncTask #7
YuraAAA, Ага. Интересная штука, но на мой взгляд слишком много кода для описания, так что для мелких задач не очень пригодна.
PYPS
51 / 50 / 7
Регистрация: 12.07.2011
Сообщений: 542
Завершенные тесты: 3
08.04.2014, 13:39  [ТС]     AsyncTask #8
Делаю так.


Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
MainActivity Mn;
 
 
 
protected Void doInBackground(String ... params) 
{
///Код
return null;
}
 
@Override
    protected void onPostExecute(Void aVoid) 
{
     super.onPostExecute(aVoid);
    Mn = new MainActivity();
    Toast.makeText(Mn, "Finished!", Toast.LENGTH_LONG).show();
 
}
Получаю ошибку . NullPointerException

Добавлено через 33 минуты
Подскажите что не так?
YuraAAA
1567 / 1309 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
08.04.2014, 14:59     AsyncTask #9
Цитата Сообщение от PYPS Посмотреть сообщение
Mn = new MainActivity();
??
Активити не создаются явно через конструктор.

Передавайте как аргумент в конструктор:

Java
1
2
3
4
5
6
7
8
9
class MyATask extends AsyncTask<Void,Void,Void> {
Context context;
public MyATask(Context context) {
this.context = context;
}
 
......
 
Toast.makeText(context....
PYPS
51 / 50 / 7
Регистрация: 12.07.2011
Сообщений: 542
Завершенные тесты: 3
14.04.2014, 14:01  [ТС]     AsyncTask #10
Подскажите еще как вернуть результат выполнения в активити из которой AsyncTasc был запущен ?
Вот делаю так.
Java
1
2
3
4
5
6
7
8
9
10
//Activity.
 
 
MyTasc AT;
String Result;
 
 
AT = new MyTasc();
AT.execute("Вася","Петя");
Result=Mt.get();

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//class AsyncTasc
class ATasc extends AsyncTask<String, Void, String>
{
protected String doInBackground(String ... params) 
{
return "HELLO WORLD"
}
 
protected void onPostExecute(String result) 
{
        super.onPostExecute(result);
////Здесь как я понимаю нужно  как то вернуть...
 
}
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
14.04.2014, 14:13     AsyncTask #11
PYPS, Создайте какой нибудь метод в активити который будет принимать результат выполнения таска, а в своем теле будет присваивать результат какой либо внутренней активити переменной. И вызывайте его в onPostExecute.

А вообще для возвращения результата Callable есть.

Добавлено через 35 секунд
Можно еще для этого интерфейс свой организовать, но это громоздко на мой взгляд)
PYPS
51 / 50 / 7
Регистрация: 12.07.2011
Сообщений: 542
Завершенные тесты: 3
14.04.2014, 14:19  [ТС]     AsyncTask #12
а разве
Java
1
Result=AT.get();
не запрашивает результат из Asynctasc?


Можно небольшой пример? мне так еще сложно понять.
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
14.04.2014, 14:48     AsyncTask #13
запрашивает, но если таску нечего возвращать, то он повесит вам прогу пока что-нибудь не появится или не вылетит исключение. Так что его желательно использовать во варианте с тайм аутом, и в блоке try catch.

Добавлено через 3 минуты
в активити

Java
1
2
3
public void result(Result result) {
        this.result = result
    }
В onPostExecute

Java
1
2
3
4
5
6
runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        result(result);
                    }
                });
Добавлено через 18 секунд
как нибудь так

Добавлено через 1 минуту
В запросе на сервер должен быть тайм аут подключения. Вот если он появился то и выводите тост от туда
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.04.2014, 14:48     AsyncTask
Еще ссылки по теме:

ArrayList не заполняется в AsyncTask - Программирование Android
Здравствуйте. В asyncTask есть такой код: String s = elements.get(0).text().split(&quot;: &quot;); Log.d(&quot;1&quot;,s); ...

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
PYPS
51 / 50 / 7
Регистрация: 12.07.2011
Сообщений: 542
Завершенные тесты: 3
14.04.2014, 14:48  [ТС]     AsyncTask #14
Понял щас по пробую?
Yandex
Объявления
14.04.2014, 14:48     AsyncTask
Ответ Создать тему
Опции темы

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