У меня есть две полные различные реализации AsyncTask
, скажем AT1
и AT2
.Выполняются две разные задачи AsyncTasks
AT1
выполнено в первую очередь, тогда выполняется AT2
. AT1
ждет в doInBackground
до AT2
выполнил свою задачу, опросив эти данные каждые 500 мс. Но этого никогда не бывает.
Так что я в основном хочу это:
Но что, кажется, происходит это:
Кроме AT1
никогда не делается, и AT2
никогда не начал.
Есть ли способ, которым я могу заставить эти два AsyncTask
s быть выполненными на двух отдельных потоках, или есть другое решение для этого?
Невозможно сначала начать AT2
и после этого выполнить AT1
.
EDIT
Для уточнения: AT1
выполняется, когда пользователь открывает определенный экран, и необходимо загрузить данные для этого экрана, на основе местоположения. AT2
выполняется при изменении местоположения, и когда это происходит, выполняются некоторые вычисления, которые не могут быть выполнены в потоке пользовательского интерфейса.
Когда AT2
еще не был выполнен, AT1
не имеет места для загрузки данных, поэтому для его завершения необходимо подождать AT2
. Когда AT2
выполнено, данные о местоположении уже есть, и AT1
не нужно ждать.
Кроме того, эта проблема возникает в ICS, а не в Android 2.3, например, this answer.
«АТ1 ждет в doInBackground до АТ2 не выполнил свою задачу», - так что нет смысла в работает асинхронно .....? –
Можете ли вы разместить код? – Christine
Оба должны выполнять сетевые операции, а 'AT1' не всегда выполняется, если выполняется' AT2'. – nhaarman