Андроид 1.5:Asynctask doInBackground() не вызывается при вызове метода get()
-
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()
.