2

当我的应用程序启动时,我正在调用 Asyn Task 函数。在后台进程中,它访问了 3 个 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);
    }

现在,当调用异步任务函数并且用户单击返回按钮时,进度条会被取消。但是后台进程继续进行,并且后退按钮被阻止,直到后台进程完成。

我希望即使按下后退按钮也能显示进度条,以免它消失。

这该怎么做......

4

1 回答 1

4

您必须将对话框的可取消属性设置为 false

dialog1.setCancelable (false);

这将防止返回键取消您的对话框

于 2012-01-09T07:14:23.793 回答