如何在Android中的工作线程上排队任务?

时间:2010-10-30 10:22:40

标签: android multithreading queue

我正在尝试找到一种在不是UI线程的线程上排队任务的简单方法。

我有一个BroadcastReceiver,每次拍摄图像时都会响应Intent,并在每次发生时通知我的服务。服务必须进行一些处理(缩放和旋转图像),我想在新线程上执行此操作(该服务在与我的主Activity相同的线程上运行)。所以我一直在寻找AsyncTask。

我的问题是,如果在完成前一个图像之前拍摄下一个图像,我将同时运行两个AsyncTasks,我不希望这样。我想排队下一个的处理,直到第一个完成。

所以基本上我想要两个线程。一个是标准的UI线程,另一个是我的工作线程,我可以在其中执行任务队列。

最好的方法是什么?

1 个答案:

答案 0 :(得分:4)

  

我有一个BroadcastReceiver,每次拍摄图像时都会响应Intent,并在每次发生时通知我的服务。服务必须进行一些处理(缩放和旋转图像),我想在新线程上执行此操作(该服务在与我的主Activity相同的线程上运行)。所以我一直在寻找AsyncTask。

对于此类问题,

IntentService是一个很好的解决方案,因为它将工作队列与Service中的后台线程相结合。您只需覆盖onHandleIntent()即可完成实际工作。

  

我的问题是,如果在完成前一个图像之前拍摄下一个图像,我将同时运行两个AsyncTasks,我不希望这样。我想将下一个的处理排队,直到完成第一个。

IntentService一次只能处理一个Intent