Сделайте AlertDialog в AsyncTask onPreExecute остановите doInBackground, пока это не будет отклонено - PullRequest
1 голос
/ 31 января 2011

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

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

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

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

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

1 Ответ

0 голосов
/ 31 января 2011

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

...