我正在使用asynctask
和网站从网站下载数据
我的异步任务代码在
public class getSyncTaskInBackground extends AsyncTask<Void, Void, Void>{
@Override
protected Void doInBackground(Void... params) {
getSynchronizeTask();
return null;
}
@Override
protected void onPostExecute(Void result) {
if(progressDialog != null && progressDialog.isShowing()) {
progressDialog.dismiss();
}
displaySynchronizetask();
super.onPostExecute(result);
}
@Override
protected void onPreExecute() {
progressDialog = ProgressDialog.show(synchronize.this, "Tasks are synchroning...", "Please wait...");
super.onPreExecute();
}
@Override
protected void onCancelled() {
super.onCancelled();
if(progressDialog != null && progressDialog.isShowing()) {
progressDialog.dismiss();
}
}
}
此线程需要更多时间来完成任务
所以,如果我想在进程之间取消这个线程,那么我已经写了这个按下后退按钮的代码
或者如果进度条已被解雇,那么我想通过调用finish();
来关闭活动
我的后退代码如下所示
@Override
public void onBackPressed() {
syncThread.cancel(true); //syncThread is the object of getSyncTaskInBackground
if(progressDialog != null && progressDialog.isShowing()) {
progressDialog.dismiss();
} else {
finish();
}
}
现在,当我按下按钮时,progressdialog
不会被解雇
我的代码中有任何错误吗?有什么办法可以满足我的需要吗?
请帮帮我
答案 0 :(得分:4)
您好
你可能想打电话
progressDialog实例上的setCancelable为true:
http://developer.android.com/reference/android/app/Dialog.html#setCancelable(boolean)
如果您想要取消progressDialog的事件 你可以设置一个onCancelListener http://developer.android.com/reference/android/app/Dialog.html#setOnCancelListener(android.content.DialogInterface.OnCancelListener)
希望这会有所帮助