Можно ли отменить AsyncTask с одной строковой командой в doInBackground , которая выполняет очень длинную операцию, например
@Override protected Boolean doInBackground(String... filename) { fetchfile(filename[0]); // ... // ... return ...; }
В вашем долгосрочном методе периодически проверяйте isCanceled, если это правда, возвращайте из функции как можно скорее, чтобы асинхронный поток мог быть закрыт. И вы можете вызвать cancel () из любого потока.
Вы можете AsyncTask.cancel() отменить.Вы можете отменить его в методе fetchFile в соответствующем месте, где, по вашему мнению, это не приведет к несоответствиям в ваших данных или в месте, где его проще откатить.
AsyncTask.cancel()
fetchFile