2015-03-03 3 views
0

Я пишу приложение, которое выполняет несколько загрузок данных JSON из нескольких источников. Каждая загрузка выполняется асинхронно с помощью метода обратного вызова.Как обрабатывать несколько асинхронных внутри IntentService

Моя идея - использовать IntentService, так как я хочу, чтобы вся обработка данных выполнялась в одном потоке и одновременно вызывала все асинхронные загрузки. Но так как IntentService останавливается после завершения работы onHandleIntent, не будет, как я могу заставить его ждать завершения всех асинхронных загрузок? Это как мой метод onHandleIntent будет выглядеть

@Override 
    protected void onHandleIntent(Intent intent) { 
     asyncTaskAWithCallback{ 
      //some handling of data 
     } 
     asyncTaskBWithCallback{ 
      //some handling of data 
     } 

     ... 

     asyncTaskNWithCallback{ 
      //some handling of data 
     } 
     //Some code to wait for all callbacks to finish? 
    } 
+3

Я бы рекомендовал вам создать собственную 'Сервис' с вашим собственным управлением потоками, где вы сможете лучше реализовать свои собственные правила. – CommonsWare

ответ

0

Я кончался созданием Service вместо IntentService так же, как CommonWare, предлагаемый в комментарии. Следуя этому example и помещая обработку данных в отдельный поток.

0

добавить цикл ожидания для счетчика, чтобы достичь значения вашей asyncs рассчитывать и пусть каждый ASync увеличить это количество onPost

+0

Это не сработало, к сожалению, асинхронный обратный вызов никогда не вызывался. – Nilsymbol

+0

как это никогда не называлось! –

+0

Вы уверены, что вызвали async.execute() ?? –

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