в этом приложении пользователь входит в систему, и его учетные данные проверяются на сервере.
Пользователь может ждать несколько секунд, в зависимости от того, насколько быстро телефон может открыть соединение для передачи данных, если вообще сможет. Мне нужно диалоговое окно с надписью «подождите» или «подтверждение учетных данных» или что-то длинное в этих строках после того, как пользователь нажмет кнопку входа в систему.
Желаемый визуальный порядок: нажмите «Войти» -> диалоговое окно «подождите» отображается в этом же действии -> когда результат поступает с сервера, загружается новое действие (или выдается ошибка)
Текущий визуальный порядок: нажмите войти -> пользователь ждет, как будто приложение зависло -> загружается новая активность
Я пытаюсь сделать эту работу с потоками с помощью 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(), она недействительна. В отладке это никогда не происходит здесь
@Override
protected Void doInBackground(Void... arg0) {