java - 防止android中的asynctask任务排队

标签 java android android-asynctask

我需要防止同时执行两个或多个异步任务,例如:

AsyncTask t1 = new myTask();
AsyncTask t2 = new myTask();
AsyncTask t3 = new myTask();
t1.execute();
t2.execute();
t3.ececute();

我需要取消 t2 和 t3,并且在 t1 正在运行时根本不执行它们。 Executors.newSingleThreadExecutor() 是我需要的吗? 谢谢

最佳答案

Executors.newSingleThreadExecutor()将在单个线程上运行所有内容,即一个接一个地运行。执行您想要执行的操作的最佳方法是,如果当前任务已在运行,则不允许创建新任务。您可以使用以下代码作为示例:

MyAsyncTask task = new MyAsyncTask();
private void createNewTask(Object o) {
  if(task.getStatus() == AsyncTask.Status.RUNNING) {
    //Do Something?
  } else {
    task = new MyAsyncTask();
    task.execute(arg0);
  }
}

关于java - 防止android中的asynctask任务排队,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24637236/

相关文章:

android - mayInterruptIfRunning取消ASyncTask的用法-函数调用顺序-

java - 使用 Collections.sort() 对 ArrayList 进行复杂排序?

java - 用java编写多表转置密码

android - 我的数据库应该存储在 Flutter 中的什么位置?

java - Android Activity ASyncTask 和 onCancelled

java - 如果时间太长,请重新启动操作

Java如何查找类? (试图加载驱动程序 : com. mysql.jdbc.Driver)

java - Hibernate 将序列化数据存储在单行中,而不是单独的行中

android - 在 Android 应用程序中集成 WebGL

android - 从 adb shell 在 Cyangenmod Android 中压缩文件