Я создаю игру, в которой пользователь взаимодействует с графическим интерфейсом, в то время как компьютер находит решение головоломки в фоновой задаче. Пользователь может выбрать завершение игры в любое время, после чего я хочу остановить фоновую задачу и получить найденные решения.
Это все работает нормально, за исключением того, что я не могу принудительно завершить фоновую задачу, когда пользователь выбирает?!? Когда пользователь выбирает «Готово», у меня есть следующее:
computerSolutionTask.cancel(true);
// ...disable some GUI buttons etc...
while (computerSolutionTask.getStatus() != AsyncTask.Status.FINISHED){
// ...do nothing...
}
txt_computer.setText(computerSolutionTask.get());
И в моем классе AsyncTask я регулярно проверяю isCancelled (), но кажется, что он просто зависает в цикле while, который я включил выше.
Я чувствую, что, возможно, немного неправильно все расскажу, потому что я не хочу отменять фоновую задачу, я просто хочу, чтобы она закончилась, где бы она ни была, и вернула то, что имела.
Эта ветка , кажется, задает тот же вопрос, что и я, но не имеет решения ... Я пока рисую пробелы во всех своих исследованиях, и любая помощь будет очень полезной. оценили.