检查AsyncTask的工作情况

yit*_*al9 4 multithreading android android-asynctask

我在另一个线程中有一些工作要做(通过doingAsyncTask).用户单击按钮时开始工作.但同时只有一个doneAsyncTask对象必须完成这项工作,我知道如果在执行AsyncTask工作,那么点击按钮就不能创建一个新的对象doneAsyncTask并执行它,它必须等到工作完成.我怎么检查它?

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() {
    }
   }
}
Run Code Online (Sandbox Code Playgroud)

解决了 所有问题,它适用于我

      if(task.getStatus() == AsyncTask.Status.FINISHED)
            task=new ProgressBarShow();
        if(task.getStatus() == AsyncTask.Status.PENDING){
            //task=new ProgressBarShow();
            task.execute();
        }
Run Code Online (Sandbox Code Playgroud)

use*_*305 9

检查此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. 
Run Code Online (Sandbox Code Playgroud)

码:

if (doingAsyncTask().getStatus().equals(AsyncTask.Status.FINISHED))
     doingAsyncTask().execute();
else
Run Code Online (Sandbox Code Playgroud)

编辑:

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
         }
    }
    // ...
}
Run Code Online (Sandbox Code Playgroud)