当我的应用程序启动时,我正在调用Asyn Task函数。在后台进程中,它会点击3个API及其解析功能,大约需要10分钟的时间。
在这种情况下,如果用户点击android默认后退按钮,那么asyn任务将被取消。为了避免这种情况,我尝试按如下方式阻止后退按钮操作。
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);
}
现在,当调用异步任务函数并且用户单击后退按钮时,进度条会被取消。但后台进程继续,后退按钮被阻止,直到后台进程完成。
我希望即使按下后退按钮也会显示进度条,这样它就不会消失。
怎么做......
答案 0 :(得分:4)
您必须将对话框的cancelable属性设置为false
dialog1.setCancelable(false);
这将阻止后退键取消对话