我有AsyncTask
这种形式
private class AsyncOperation extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute(){
pDialog = new ProgressDialog(MyActivity.this);
pDialog.setMessage("Waiting...");
pDialog.show();
}
@Override
protected Void doInBackground(Void... params) {
...
return null
}
protected void onPostExecute(Void params){
pDialog.dismiss();
}
如果用户触摸屏幕,则在任务结束前关闭等待对话框,如果屏幕在操作期间进入待机状态,如果我返回应用程序并且任务尚未完成,则同样的问题。
我该如何解决这个问题? 此外,任何改进我在holo App上执行异步操作的方式的建议都将受到赞赏。
答案 0 :(得分:1)
您必须将ProgresDialog的可取消属性设置为false:
protected void onPreExecute(){
pDialog = new ProgressDialog(MyActivity.this);
pDialog.setMessage("Waiting...");
pDialog.setCancelable(false);
pDialog.show();
}
这可确保当您点击对话框以外的任何其他位置时,progressDialog会消失。
答案 1 :(得分:0)
您可以使用此设置可取消属性。
对话框对话框;
@覆盖
protected void onPreExecute(){
super.onPreExecute();
dialog = ProgressDialog.show(Login.this,"Connecting...", "Please wait...", false,true);
}