Android 1.5: Asynctask doInBackground () не вызывается при вызове метода get () - PullRequest
2 голосов
/ 23 марта 2010

У меня проблема с выполнением моих асинктаск. Вот код проблемы:

firstTask = new background().new FirstTask(context);
if (firstTask.execute().get().toString().equals("1")) {
    secondTask = new background().new SecondTask(context);
}

То, что я здесь делаю, - это создание нового объекта asynctask, присвоение ему firstTask, а затем выполнение. Затем я хочу запустить отдельную асинхронную задачу после завершения первой и убедиться, что она возвращает значение успеха (в данном случае 1). Это прекрасно работает на Android 2.0 и выше. Тем не менее, я тестирую с Android 1.5, и проблемы начинают появляться. Приведенный выше код запускает первую асинхронную задачу, но doInBackground () никогда не вызывается, несмотря на то, что вызывается onPreExecute (). Если я хочу выполнить первую задачу без метода get (), вызывается doInBackground (), и все работает как положено. За исключением того, что сейчас у меня нет способа определить, успешно ли выполнено первое задание, чтобы я мог сказать второму заданию выполнить. Можно ли предположить, что это ошибка с асинхронной операцией на Android 1.5? Тем более что API (https://developer.android.com/reference/android/os/AsyncTask.html#get%28%29) говорит, что метод get был реализован начиная с API 3. Есть ли способ это исправить? Или другой способ определить, что первое задание выполнено?

1 Ответ

0 голосов
/ 23 марта 2010

Если вы собираетесь блокировать (через get()), почему вы вообще беспокоитесь о AsyncTask? Целый пункт из AsyncTask состоит в том, чтобы не блокировать.

Если вы хотите, чтобы SecondTask выполнялся, когда FirstTask выполнен, FirstTask выполняйте SecondTask в FirstTask onPostExecute().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...