我是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,这可能会为任务创建其他线程。
这是解决此问题的正确方法吗? 如果还有其他方式,请告诉我。
谢谢。
答案 0 :(得分:2)
结帐此链接
http://mindtherobot.com/blog/159/android-guts-intro-to-loopers-and-handlers/
您可以从此链接获取示例代码
http://mindtherobot.com/blog/wp-content/uploads/2010/06/downloadqueue.zip
答案 1 :(得分:0)
你将是串行执行器,它将同时串行执行后台任务...
DownloadImageTask o1 = new DownloadImageTask();
o1.executeOnExecutor(AsyncTask.SERIAL_EXECUTOR);