#android
#Android
Вопрос:
У меня есть пользовательский диалог для входа в мое приложение. Я также добавил к нему progressbar и сделал невидимым. Когда пользователь нажимает кнопку, я вызываю AsyncTask для обработки http-входа. Я управляю progressbar из AsyncTask. Все выглядит хорошо, но во время выполнения AsyncTask диалоговое окно полностью реагирует. Я могу изменять поля, я могу нажимать кнопки и т.д. Я вижу 3 варианта:
-
Перед запуском asynctask я отключу все элементы управления. Но как я узнаю, когда закончу? Могу ли я использовать обратный вызов?
-
Сделайте окно входа в систему активным и покажите диалоговое окно прогресса.
-
?
Пожалуйста, дайте мне знать, как правильно справиться с этим сценарием
вот асинхронная задача. Я пытаюсь сделать его универсальным, где я передаю URL и тело и возвращаю http-ответ:
private class RESTService extends AsyncTask<String, Integer, String>
{
//TODO: Add text to progress bar and add custom artwork
ProgressBar progress;
Dialog dialog;
Activity activity;
public RESTService(ProgressBar p, Dialog d, Activity a)
{
progress = p;
}
@Override
protected String doInBackground(String... stuff)
{
String url = stuff[0];
String post = stuff[1];
try
{
Thread.sleep(15000);
} catch (InterruptedException e)
{
e.printStackTrace();
}
return "done";
}
@Override
protected void onPreExecute()
{
super.onPreExecute();
if (dialog != null)
{
}
if (progress != null)
{
progress.setVisibility(View.VISIBLE);
}
}
@Override
protected void onPostExecute(String s)
{
super.onPostExecute(s);
if (progress != null)
{
progress.setVisibility(View.GONE);
}
}
}
Ответ №1:
Что я в итоге сделал — запустил AlertDialog, создал интерфейс для прослушивателя AsyncTask и вызвал родительского абонента по завершении задачи.