Проверьте работу AsyncTask

У меня есть работа, которую нужно сделать в другом потоке (путем созданияAsyncTask). Начало работы, когда пользователь нажимает кнопку. Но в то же время только один объект doAsyncTask должен выполнить эту работу, i meen, если doAsyncTask работает, а затем нажмите кнопку, не нужно создавать новый объект doAsyncTask и выполнять его, он должен ждать окончания работы. Как я могу это проверить?

public class SearchActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //.... } public void onclickButton(View view) { new doingAsyncTask().execute(); } public class doingAsyncTask extends AsyncTask<Void, Void, Void> { protected Void doInBackground(Void... unused) { //doing something return(null); } protected void onProgressUpdate() { } protected void onPreExecute() { } protected void onPostExecute() { } } } 

SOLVED thx all, его работы для меня

  if(task.getStatus() == AsyncTask.Status.FINISHED) task=new ProgressBarShow(); if(task.getStatus() == AsyncTask.Status.PENDING){ //task=new ProgressBarShow(); task.execute(); } 

Проверьте этот AsyncTask.Status

 AsyncTask.Status FINISHED Indicates that onPostExecute(Result) has finished. AsyncTask.Status PENDING Indicates that the task has not been executed yet. AsyncTask.Status RUNNING Indicates that the task is running. 

код:

 if (doingAsyncTask().getStatus().equals(AsyncTask.Status.FINISHED)) doingAsyncTask().execute(); else 

РЕДАКТИРОВАТЬ:

 public class SearchActivity extends Activity { doingAsyncTask asyncTask; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // ... asyncTask = new doingAsyncTask(); } public void onclickButton(View view) { if(ayncTask.getStatus().equals(AsyncTask.Status.FINISHED) || ayncTask.getStatus().equals(AsyncTask.Status.PENDING)) { asyncTask.execute(); } else { // do something } } // ... } 

Вы можете проверить статус AsyncTask => AsyncTask.Status

Например:

  myAsyncTask mtask = new myAsyncTask(); mtask.execute(); // write this wherever you want to check status if(mtask.getStatus() == AsyncTask.Status.FINISHED){ // My AsyncTask is done and onPostExecute was called } 

Используйте getStatus () для AsyncTask, чтобы проверить его статус перед установкой новой задачи

Код может быть таким:

 doingAsyncTask task; public void onclickButton(View view) { if(task==null){ task=new doingAsyncTask(); task.execute(); } else if(task.Status!=RUNNING){ task=new doingAsyncTask(); task.execute(); } }