android - 检查工作 AsyncTask

标签 android multithreading android-asynctask

我在另一个线程中有一些工作要做(通过 doingAsyncTask)。 当用户点击按钮时工作开始。但同时 只有一个 doingAsyncTask 对象必须完成这项工作,我认为如果 doingAsyncTask 正在工作,则单击按钮不能创建一个新的 doingAsyncTask 对象并执行它,它必须等到工作完成。我该如何检查?

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() {
    }
   }
}

已解决 谢谢大家,它对我有用

      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
         }
    }
    // ...
}

关于android - 检查工作 AsyncTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10042922/

相关文章:

java - 在 Android 应用程序中更新背景颜色并在其间进行短暂 sleep

java - 我是否需要在 future.get(); 之后使用 threadPool.awaitTermination

java - 在多线程环境中并行执行每个子任务

android - 将 AsyncTask 与数据库一起使用

android - android中的异步任务不起作用

java - 将 Android 的日期字符串转换为日期对象

java - 缩放 android 时禁用 Mapview 滚动

Android:寻找复制/粘贴复杂对象的有效策略

python - 有人可以帮助我使用 python 网络程序吗?

Android FTP 连接失败