Передача параметров AsyncTask и их изменение

81
7

У меня есть AsyncTask, который что-то делает:

private class Task extends
AsyncTask<Foo, Void, Boolean> {

@Override
protected Boolean doInBackground(Foo... params) {
// send foo to server;
}
}

В моем основном классе я делаю что-то вроде:

new Task().execute(foo);
foo.setValue(0);

Будет ли значение foo в фоне AsyncTask всегда прежним значением? Или может быть, что значение foo установлено равным 0, прежде чем AsyncTask выполнит свою задачу?

Благодарю!

спросил(а) 2012-04-29T12:46:00+04:00 8 лет, 6 месяцев назад
1
Решение
81

Задача async запускается в другом потоке, связь между потоком должна выполняться посредством обмена потоками с помощью обработчика. Вы не можете изменить значение члена async-задачи, как вы делаете.

Вот хороший учебник, посвященный потокам, задачам и обработчикам asyn: http://www.vogella.com/articles/AndroidPerformance/article.html

И еще примеры с использованием обработчиков: http://code.google.com/p/meneameandroid/source/search?q=handleMessage&origq=handleMessage&btnG=Search+Trunk, используя обработчик для анимации: http://code.google.com/p/android-page-curl/source/browse/trunk/src/com/mystictreegames/pagecurl/PageCurlView.java

ответил(а) 2012-04-29T12:50:00+04:00 8 лет, 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема