Прежде всего асинхронные задачи в общем случае не запускаются в один и тот же момент, но выполнение одной и той же асинхронной задачи фактически является очередью. так что представьте, если вы создаете 2 экземпляра вашей DownloadFilesTask и выполняетеих таким же способом, как:
task1.execute();
task2.execute();
, это означает, что задача 2 не будет запущена, пока задача 1 не завершит весь процесс onPreExecute, DoInBg, onPostExecute, так что вы можете быть уверены, что этого не произойдет одновременно.также taskStatus является ENUM.вы можете проверить это так, а не в виде строки, такой как:
task.getStatus()==Status.FINISHED
в вашем случае, если вы не хотите ставить в очередь несколько задач до тех пор, пока текущая задача не будет завершена, выполните что-то вроде этого:
if(task==null || task.getStatus()!=Status.FINISHED){
task = new DownloadFilesTask();
task.execute();
}
Отмена задачи означает, что doInBackground будет работать, но postExecute не будет.вы можете проверить, выполняется ли задание, чтобы отменить его во время обработки bg.