Учитывая официальную документацию:
doInBackground (Params ...), вызывается в фоновом потоке сразу после завершения выполнения onPreExecute ().Этот шаг используется для выполнения фоновых вычислений, которые могут занять много времени.Параметры асинхронной задачи передаются на этот шаг.Результат вычисления должен быть возвращен этим шагом и будет возвращен к последнему шагу.Этот шаг также может использовать publishProgress (Progress ...) для публикации одной или нескольких единиц прогресса.Эти значения публикуются в потоке пользовательского интерфейса на шаге onProgressUpdate (Progress ...).
onPostExecute (Result), который вызывается в потоке пользовательского интерфейса после завершения фоновых вычислений.Результат фоновых вычислений передается на этот шаг в качестве параметра.
Задачу можно отменить в любое время, вызвав метод cancel (логическое значение).Вызов этого метода приведет к тому, что последующие вызовы isCancelled () вернут true.После вызова этого метода вместо onPostExecute (java.lang.Object) будет вызываться onCancelled (java.lang.Object) после того, как doInBackground (java.lang.Object []) вернется.Чтобы задача была отменена как можно быстрее, вы всегда должны периодически проверять возвращаемое значение isCancelled () из doInBackground (java.lang.Object []), если это возможно (например, внутри цикла.)
Поэтому, если вы хотите остановить задачу, вы можете сделать что-то вроде:
class myAsyncTaskClass(val pictures:List<Pictures>, Void, Boolean){
fun doInBackground(var args){
// Check all your pictures, if you find the right face stop your task
if (specificPersonIsDectected){
cancel()
return specificPersonIsDectected
}
}
fun onCancelled(var specificPersonIsDectected){
//Notify you found the specific person
}
}
Я рекомендую вам прочитать официальную документацию , чтобы понять, как вам следует работать с AsyncTask