В моем проекте есть главная форма с AsynkTask, на которой я подтягиваю 1 json. Загрузка остальных форм не происходит, пока не придут данные. Задача: сделать так, чтобы
AlertDialog с кнопкой "Повторить". Есть недописанный фрагмент кода с неким флагом, который я обновлял после возникновения ошибки. Убрал лишнее, оставив только суть. Но проблема в том, что сам алерт не закрывался, и прогресс бар его перекрывал собой, когда я возобновлял загрузку. Например, специально выключаешь интернет, открываешь приложение, вызвалось окно. Затем его включаешь, нажимаешь повторить, приложение продолжает работу, получив информацию, а копия незакрытого диалога еще остается, и затем уже сама закрывается, и еще раз посылает сигнал о загрузке.
@Override
protected void onResume() {
new ParseTask().execute();
super.onResume();
}
private class ParseTask extends AsyncTask<Void, Void, String> {
Button buttonContinue = (Button) (findViewById(R.id.buttonContinue));
@Override
protected void onPreExecute() {
super.onPreExecute();
showProgress();
}
@Override
protected void onCancelled() {
super.onCancelled();
}
@Override
protected String doInBackground(Void... voids) {
try {
...
} catch (Exception e) {
e.printStackTrace();
}
return resultJson;
}
@Override
public void onPostExecute(final String strJson) {
super.onPostExecute(strJson);
ObjectClass objectClass;
...
....
try {
....
}
} catch (JSONException e) {
e.printStackTrace();
errorDetecer = true;
}
AlertDialog.Builder builder = new lertDialog.Builder(MainActivity.this);
if(errorDetecer) {
new ParseTask().onCancelled();
builder.setTitle("Ошибка загрузки данных");
builder.setCancelable(false);
builder.setMessage("Скорее всего, она связана с работой сервера или сети. Повторим операцию?");
builder.setNegativeButton("Повторить",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
alertDialog.dismiss();
onResume();
}
});
errorDetecer = false;
alertDialog = builder.create();
alertDialog.show();
} else {
}
buttonContinue.setVisibility(View.VISIBLE);
hideProgress();
}
}
Первый вопрос простой - стоит ли от сложности создания диалога на мой взгляд, присмотреться к более современным технологиям - насколько asynktask олдскулен?
И второй, кто сможет поделиться опытом отслеживания ошибок с применением AlertDialog?
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники