блокировать кнопку возврата Android во время выполнения задачи Asyn - PullRequest
2 голосов
/ 09 января 2012

Когда мое приложение запускается, я вызываю функцию 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 Ответ

4 голосов
/ 09 января 2012

Вам нужно будет установить свойство Cancellable диалога в false

dialog1.setCancelable (false);

Это не позволит клавише возврата отменить диалог

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...