2015-11-18 5 views
-1

Предположим, что я запускаю asyncTask из цикла 'For' (с 3 итерациями), вызывая 'AsyncTask.executeOnExecutor (AsyncTask.SERIAL_EXECUTOR)'. В этот момент, когда я запускаю код, «doInbackground()» выполняется 3 раза (3 раза для итерации), а затем «onPostExecute()» снова запускается 3 раза.Выполнение методов Android AsyncTask последовательно изнутри цикла 'For'

Так что я сомневаюсь, что есть способ выполнить 'doInbackground()', а затем 'onpostExecute()' для одной итерации, а затем для следующей итерации в том же порядке.

+0

Вы можете вызвать следующую асинтезу в методе onPostExecute предыдущего права? – Nanoc

+0

Я не думаю, что это правильный способ справиться с моим делом, потому что мой асинхронный вызов вызывается из цикла for – Avijeet

+0

Какова причина, по которой этот вопрос проголосовали? Это неясно или что? – Avijeet

ответ

0

использовать метод Получить AsyncTask в (долгое время ожидания, TimeUnit блок) так:

task.get(1000, TimeUnit.MILLISECONDS); 

Это сделает ваш основной поток должен ожидать результата AsyncTask в большинстве 1000 миллисекунд.

+0

Спасибо, но я не хочу вводить задержку. Я хочу, чтобы асинхронные методы выполнялись последовательно – Avijeet

+0

Из документов AsyncTask: Начиная с HONEYCOMB, задачи выполняются в одном потоке, чтобы избежать ошибок обычного приложения, вызванных параллельным выполнением. , так что если вы не> = HONEYCOMB, то, возможно, переключитесь на использование ExecutorService: Исполнитель-исполнитель = Исполнители.newSingleThreadExecutor(); –

Смежные вопросы