gpt4 book ai didi

android - 按下后退按钮时 AsyncTask 终止任务

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:37:31 25 4
gpt4 key购买 nike

我在使用 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);
}
}

但是当我按下后退按钮时没有任何反应,它只是完成了任务,就好像我没有按下后退按钮一样

知道为什么吗?

最佳答案

这个问题有两个部分:

1) 以这种方式实现您的doInBackground(),因此它会检查AsyncTask 是否被取消。

 @Override
protected String doInBackground(String... urls) {
for(int i = 0; i < 100 && !isCancelled(); i++) {
//do some stuff
}
}

2) 您应该在 Activity 的 onDestroy() 中调用 asynTask.cancel(true)

关于android - 按下后退按钮时 AsyncTask 终止任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7095958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com