按下后退按钮时,AsyncTask杀死任务 [英] AsyncTask kill task when back button pressed
本文介绍了按下后退按钮时,AsyncTask杀死任务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在使用AsyncTask时遇到一些问题.
I am having a little problems with AsyncTask.
我将其实现如下
private class MakeConnection extends AsyncTask<String, Void, String> implements OnDismissListener{
Context context;
ProgressDialog myDialog;
public MakeConnection(Context conetext)
{
this.context = conetext;
myDialog = new ProgressDialog(this.context);
myDialog.setCancelable(true);
myDialog.setOnDismissListener(this);
}
@Override
protected String doInBackground(String... urls) {
//do stuff
}
@Override
protected void onPostExecute(String result) {
try {
myDialog.dismiss();
success(result);
}catch(JSONException e)
{
data = e.toString();
}
}
@Override
protected void onProgressUpdate(Void... values) {
myDialog = ProgressDialog.show(context, "Please wait...", "Loading the data", true);
}
@Override
public void onDismiss(DialogInterface dialog) {
this.cancel(true);
}
}
但是当我按下后退按钮时,什么也没发生,它就像我没有按下后退按钮一样完成了任务
But when ever I press the back button nothing happens, it just completes the task as if I didn't press the back button
知道为什么吗?
推荐答案
此问题有两个部分:
1)以这种方式实现您的doInBackground()
,以便它检查AsyncTask
是否被取消.
1) Implement your doInBackground()
in such a way, so it checks whether AsyncTask
is cancelled.
@Override
protected String doInBackground(String... urls) {
for(int i = 0; i < 100 && !isCancelled(); i++) {
//do some stuff
}
}
2)您应该在活动的onDestroy()
中调用asynTask.cancel(true)
.
2) You should call asynTask.cancel(true)
in your Activity's onDestroy()
.
这篇关于按下后退按钮时,AsyncTask杀死任务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文