Сделайте AlertDialog в AsyncTask onPreExecute, чтобы остановить doInBackground, пока он не будет закрыт

StackOverflow https://stackoverflow.com/questions/4846591

Вопрос

Есть ли способ предотвратить запуск метода / потока doInBackground в AsyncTask до тех пор, пока не будет закрыт AlertDialog, отображаемый во время метода onPreExecute?

doInBackground предназначен для запуска только после завершения onPreExecute, однако, насколько я могу судить, наличие открытого AlertDialog не мешает завершению onPreExecute.

Подробности: Я сейчас использую свой телефон, поэтому не могу предоставить образец кода, но обзор кода заключается в том, что это приложение требует данных, к которым можно получить доступ только через мобильные данные из-за того, что он находится в сети телекоммуникационной компании. PreExec моей асинтаксической задачи getData сначала проверяет, включен ли Wi-Fi, и, если да, отображает диалоговое окно с предупреждением с параметрами Disable Wifi и Cancel.

Отмена должна завершить задачу, а "Отключить Wi-Fi" - значит отключить Wi-Fi. Затем метод doInBg проверяет, установлено ли соединение с мобильной передачей данных, и, если нет, переходит в цикл ожидания, пока это не произойдет. После этого doInBg получает данные ...

В настоящее время, если Wi-Fi включен, doInBg запускается до закрытия диалогового окна, застревает в цикле сна, пока что-то не вызовет срабатывание мобильного соединения ... Это приводит к потенциальным проблемам, которых я бы хотел избежать.

Это было полезно?

Решение

Вы можете попробовать запустить его где-нибудь, чтобы проверить, работает ли ваш Wi-Fi, а затем использовать AlertDialogListener, чтобы отслеживать действие кнопок в AlertDIalog.тогда вы можете запустить свой Async внутри AlertDialogListener.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top