Я использую расширенный цикл for и оператор switch для запуска различных AsyncTasks. Как я могу приостановить каждую итерацию цикла, чтобы подождать, пока какая-либо данная AsyncTask не будет сочтена? Я пытался создать поток и ждать/присоединяться/уведомлять, когда каждый AsyncTask завершен, но я просто замораживаю пользовательский интерфейс. Ниже мой фрагмент кода ...Приостановка расширенного цикла для цикла
for (Integer integer : sequence) {
switch (integer) {
case 1: // Async process
break;
case 2: // Async process
break;
case 3: // Async process
break;
case 4: // Async process
break;
default: break;
}
//Need magic solution here...
}
Я пытаюсь использовать AsyncTask для Simon-подобных процессов. Цикл должен проходить через каждую кнопку (на основе значения Integer). Я использую AsyncTask для сна в течение 1 секунды в методе doInBackground, используя как onPreExecute, так и onPostExecute для обновления состояний кнопок в пользовательском интерфейсе. Есть ли лучший способ сделать что-то подобное? – Jason
Переместите весь управляющий код в свой собственный поток и обновите пользовательский интерфейс асинхронно. AsyncTask - не лучший способ обработки длинных фоновых операций. Попытайтесь использовать свой собственный поток и общаться с потоком пользовательского интерфейса через обработчик. Держите поток пользовательского интерфейса как можно более чистым и выполняйте только связанные с ним операции. –