У меня есть активность, которая содержит метод async-задачи. Этот метод async-задач продолжает выполняться в фоновом режиме, даже когда пользователь переместился с этой страницы. Пожалуйста, есть способ остановить выполнение задач async, как только пользователь нажмет на кнопку «Назад» или переместится с этой страницы на другую страницу.Как остановить выполнение задач async при нажатии кнопки возврата
Ниже то, что я пытался, но оно не работает
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 {
...
}
}
}
UPDATE
После тестирования всех ответов ниже, все они позволяют выполнение doinbackground
внутри асинхронной задачи, даже несмотря на то, обратно нажата кнопка. Мне нужна ситуация, когда фон будет отменен, как только будет нажата кнопка «Назад».
Используйте отменить метод в onBackPressed() http://developer.android.com/reference/android/os /AsyncTask.html – Kuffs
После тестирования всех ответов ниже, все они позволяют выполнять «doinbackground» в задаче async, даже если нажата кнопка «Назад». Мне нужна ситуация, когда фон будет закрыт, как только будет нажата кнопка «Назад». – NewBIe