Java 如何使多个Android异步任务同时运行?

Java 如何使多个Android异步任务同时运行?,java,android,multithreading,listview,android-asynctask,Java,Android,Multithreading,Listview,Android Asynctask,好的,我有一个Android应用程序,它有一个加载到mainactivity上的片段列表视图。列表视图包含一个imageview,它通过一个适配器从设备外部存储器加载一个图像,该适配器反过来调用一个名为BackgroundImageLoader的AsyncTask对象。 在这一点上,如果我运行我的应用程序,一切都很好,图像几乎是瞬间显示的。 要提供有关该过程的更多详细信息。。。。 在listview适配器的bindView方法上,我调用了一个调用以下内容的方法: BackgroundImageL

好的,我有一个Android应用程序,它有一个加载到mainactivity上的片段列表视图。列表视图包含一个imageview,它通过一个适配器从设备外部存储器加载一个图像,该适配器反过来调用一个名为BackgroundImageLoader的AsyncTask对象。 在这一点上,如果我运行我的应用程序,一切都很好,图像几乎是瞬间显示的。 要提供有关该过程的更多详细信息。。。。 在listview适配器的bindView方法上,我调用了一个调用以下内容的方法:

BackgroundImageLoader loader = new BackgroundImageLoader(photoID, imageView); 
loader.execute();
现在,在上述代码完美运行后,我编写了一些逻辑来“清除旧照片”。此逻辑放在名为AutoPergephotos_Task的AsyncTask对象中。基本上,我希望在应用程序启动时运行一次任务,但我只希望它在后台运行,以免干扰UI。我尝试过从Applications onCreate()方法的尾部启动它,也尝试过从MainActivity的onCreate()方法启动它。结果是,清除逻辑运行良好,工作正常。当它在后台运行时,除了BackgroundImageLoader异步任务之外,我的UI似乎可以很好地处理所有事情。在自动敦促任务完成之前,所有照片都不会开始显示。甚至为了证明它与我在任务中所做的事情无关,我注释掉了我所有的业务逻辑,让任务休眠

public class AutoPurgePhotos_Task  extends AsyncTask<Void, Void, Void> {

public AutoPurgePhotos_Task() {
    super();
}

@Override
protected Void doInBackground(Void... params) {

    SystemClock.sleep(10000);
    return null ;
}
}
我再次尝试从几个不同的区域启动它,无论我在何处/如何启动它,另一个异步任务都将等待该任务完成后才能运行。
谢谢你能给我的任何帮助。

使用
executeOnExecutor(AsyncTask.THREAD\u POOL\u EXECUTOR)
而不是
execute()
。引述:

如果确实需要并行执行,可以使用线程池执行器调用executeOnExecutor(java.util.concurrent.Executor,Object[])


使用
executeOnExecutor(AsyncTask.THREAD\u POOL\u EXECUTOR)
而不是
execute()
。引述:

如果确实需要并行执行,可以使用线程池执行器调用executeOnExecutor(java.util.concurrent.Executor,Object[])


使用
executeOnExecutor(AsyncTask.THREAD\u POOL\u EXECUTOR)
而不是
execute()
。引述:

如果确实需要并行执行,可以使用线程池执行器调用executeOnExecutor(java.util.concurrent.Executor,Object[])


使用
executeOnExecutor(AsyncTask.THREAD\u POOL\u EXECUTOR)
而不是
execute()
。引述:

如果确实需要并行执行,可以使用线程池执行器调用executeOnExecutor(java.util.concurrent.Executor,Object[])

AutoPurgePhotos_Task task = new AutoPurgePhotos_Task();
task.execute();