gpt4 book ai didi

android - 按下后退按钮时如何停止异步任务执行

转载 作者:太空宇宙 更新时间:2023-11-03 13:17:17 26 4
gpt4 key购买 nike

我有一个包含异步任务方法的 Activity ,即使用户已从该页面移出,此异步任务方法仍会继续在后台执行。请问有没有一种方法可以在用户按下后退按钮或从该页面移动到另一个页面时立即停止异步任务执行。

下面是我试过的方法,但是没有用

private AsyncTask totalLikesAsync;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity);
context = this;

totalLikesAsync = new TotalLikes().execute(msgID);
}






@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);

return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem menuItem) {
switch (menuItem.getItemId()) {
case android.R.id.home:

totalLikesAsync.cancel(true);
this.finish();
break;

case R.id.share:
new ShareImage().execute(msgImage);
default:
return super.onOptionsItemSelected(menuItem);
}
return true;
}





private class TotalLikes extends AsyncTask<String, String, JSONObject> {

@Override
protected void onPreExecute() {
super.onPreExecute();

}



@Override
protected JSONObject doInBackground(String... msgIDs) {
UserFunctions userFunction = new UserFunctions();

String msgsID = msgIDs[0];
JSONObject json=null;

if(!isCancelled()){

//This gets all the information unread from the server
json = userFunction.TotalLikes(context, msgsID);
}

return json;
}

@Override
protected void onPostExecute(JSONObject json) {
/**
* Checks for success message.
**/
if (json != null) {

...
} else {

...
}

}
}

更新

在测试了下面的所有答案之后,它们都允许在异步任务中执行 doinbackground,即使按下后退按钮也是如此。我想要一种情况,只要按下后退按钮,背景就会被取消。

最佳答案

@Override
public void onBackPressed() {
super.onBackPressed();
if (totalLikesAsync != null && totalLikesAsync.getStatus().equals(AsyncTask.Status.RUNNING)) {
totalLikesAsync.cancel(true);
}
}

关于android - 按下后退按钮时如何停止异步任务执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33935432/

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