У меня есть AsyncTask, как показано ниже:Как отменить AsyncTask на Android
private class SearchTask extends AsyncTask<Object, Object, Object> {
@Override
protected void onPreExecute() {
super.onPreExecute();
System.out.println("Start");
}
@Override
protected Object doInBackground(Object... urls) {
SearchFunction();
return null;
}
@Override
protected void onPostExecute(Object result) {
System.out.println("End");
}
}
и таймер, как показано ниже:
private Handler handler = new Handler();
private Runnable updateTimer = new Runnable() {
public void run() {
System.out.println("===status===");
System.out.println(SearchTask.getStatus());
SearchTask.cancel(true);
handler.postDelayed(updateTimer, 3000);
}
};
Позвони AsyncTask и код таймера, как показано ниже:
handler.postDelayed(updateTimer, 3000);
SearchTask SearchTask = new SearchTask();
SearchTask.execute();
Метод SearchFunction в doInBackground может потратить более 3 секунд, поэтому добавьте таймер.
Но в updateTimer первый вызов и отмена AsyncTask, doInBackground все еще работает до его завершения, а затем отменяет onPostExecute.
Как я могу сделать, чтобы отменить doInBackground прямо?
http://stackoverflow.com/questions/16538714/stop-asynctask-doinbackground-method/16538887. проверьте это – Raghunandan
u означает сказать, что вам нужно отменить асинтазу через 3 секунды? – Sri
изменить имя объекта SearchTask ... Я поразился, что ваш редактор разрешает одно и то же имя класса для объекта с тем же случаем. –