【问题标题】:block android back button while Asyn Task Execute在 Asyn 任务执行时阻止 android 后退按钮
【发布时间】:2012-01-09 07:00:21
【问题描述】:

当我的应用程序启动时,我正在调用 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);
    }

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

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

如何做到这一点......

【问题讨论】:

  • 10 分钟太长,无法阻止后退按钮,并显示进度对话框。也许您需要在后台服务中完成您的任务?

标签: android android-asynctask back-button-control


【解决方案1】:

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

dialog1.setCancelable (false);

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-21
    • 1970-01-01
    相关资源
    最近更新 更多