Андроид 1.5:Asynctask doInBackground() не вызывается при вызове метода get()

StackOverflow https://stackoverflow.com/questions/2502874

  •  21-09-2019
  •  | 
  •  

Вопрос

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

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(), и все работает как положено.За исключением того, что теперь у меня нет способа определить, успешно ли выполнена первая задача, чтобы я мог указать на выполнение второй задачи.Можно ли с уверенностью предположить, что это ошибка asynctask на Android 1.5?Тем более, что API (https://developer.android.com/reference/android/os/AsyncTask.html#get%28%29) говорит, что метод get реализован начиная с API 3.Есть ли способ это исправить?Или другой способ определить, что первая задача выполнена?

Это было полезно?

Решение

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

Если вы хотите иметь SecondTask выполнить, когда FirstTask сделано, есть FirstTask выполнять SecondTask в FirstTask's onPostExecute().

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top