如何在Android中处理后台任务队列?

时间:2014-03-11 05:05:00

标签: java android multithreading android-asynctask

我是Android编程新手,我的情况就是这样。

我有几个像这样排队的任务:

Name.       Time.(sec)   and some other attributes
Task 1      0
Task 2      1.5
Task 3      3.5
Task 4      6.5
Task 5      9.5
Task 6      10.5
Task 7      11.5
Task 8      12
...

该表基本上表示在第0秒执行任务1,在1.5秒执行任务2,在3.5秒执行任务3,依此类推。我使用任务1作为开始时间,即第0秒。有可能并行运行多个任务,即在调度任务j时,任务i可能仍在运行。所有这些任务都是网络密集型的。

正如我所说,我对Android并不熟悉,而且我正试图找出在Android中解决这个问题的最佳方法。

我正在考虑使用一个 AsyncTask (比如说队列)来循环完成所有任务,看看是时候安排任何任务了。如果没有时间安排任何任务,那么睡到下一个调度时间,即nextTaskTime - currentTime。如果是时间安排,那么为Task创建Runnable实例(或者可能是另一个AsyncTask)并开始执行。因此,基本上主线程将创建名为队列的AsyncTask,这可能会为任务创建其他线程。

这是解决此问题的正确方法吗? 如果还有其他方式,请告诉我。

谢谢。

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

你将是串行执行器,它将同时串行执行后台任务...

DownloadImageTask o1 = new DownloadImageTask();             
o1.executeOnExecutor(AsyncTask.SERIAL_EXECUTOR);