в этом приложении пользователь входит в систему, и его учетные данные проверяются на сервере.
Пользователь может подождать несколько секунд, в зависимости от того, как быстро телефон может открыть соединение для передачи данных, если оно вообще есть. Мне нужно диалоговое окно с надписью «пожалуйста, подождите» или «проверка учетных данных» или что-то в этих длинных строках после того, как пользователь нажимает кнопку входа.
Требуемый визуальный порядок: нажмите войти -> в этом же упражнении отображается диалоговое окно «Пожалуйста, подождите» -> когда с сервера приходит результат, загружается новое действие (или выдается ошибка)
Текущий визуальный порядок: нажмите войти -> пользователь ждет, как будто приложение заморожено -> загружено новое действие
Я пытаюсь сделать эту многопоточность с AsyncTask, но я просто не получаю это прямо сейчас!
class Progressor extends AsyncTask<Void, Void, Void> {
ProgressDialog dialog;
protected void onPreExecute(){
dialog = ProgressDialog.show(Login.this, "Logging In",
"Verifying Credentials, Please wait...", true);
}
Затем в моем методе oncreate у меня была вся другая логика, например, пользователь нажимает кнопку и прочее, но с тех пор я перенес это в функцию doInBackGround метода AsyncTask
/* When the Login Button is clicked: */
Button loginButton = (Button) findViewById(R.id.loginButton);
loginButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Progressor showMe = new Progressor();
showMe.onPreExecute();
showMe.doInBackground(null);
showMe.onPostExecute();
и onPostExecute просто закрывает диалоговое окно
Почему это не работает и как его нужно переставить. Какую переменную я должен передавать в функцию showMe.doInBackGround (), это void. При отладке это никогда не идет сюда
@Override
protected Void doInBackground(Void... arg0) {