Блокировать кнопку возврата Android во время выполнения задачи Asyn
Когда мое приложение запускается, я вызываю функцию Asyn Task. В фоновом процессе происходит включение трех API и их функций синтаксического анализа. Это займет около 10 минут времени.
В этом случае, если пользователь нажимает на кнопку возврата по умолчанию для Android, то асинхронная задача используется для отмены. Чтобы избежать этого, я попытался заблокировать действие кнопки "Назад" следующим образом.
class First_Time_Sync extends AsyncTask<Void, Void, Void>
{
ProgressDialog dialog1 = new ProgressDialog(Progressss.this);
protected void onPreExecute()
{
backMode = true;
dialog1.setMessage("Welcome \nThank you for waiting.");
dialog1.setIndeterminate(true);
dialog1.show();
}
protected Void doInBackground(Void... arg0)
{
.................
return null;
}
protected void onPostExecute(Void unused)
{
backMode = false;
dialog1.dismiss();
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_BACK)
{
if (backMode)
{
return true;
}
else
{
return super.onKeyDown(keyCode, event);
}
}
return super.onKeyDown(keyCode, event);
}
Теперь, когда вызывается функция асинхронной задачи и пользователь нажимает кнопку "Назад", индикатор выполнения отменяется. Но фоновый процесс продолжается, и кнопка "Назад" блокируется, пока не завершится фоновый процесс.
Я хочу, чтобы индикатор выполнения отображался, даже если нажата кнопка "Назад", чтобы он не исчезал.
Как это сделать......
1 ответ
Вам нужно будет установить свойство Cancelable диалога в false
dialog1.setCancelable (false);
Это не позволит клавише Back отменить ваш диалог