我正在尝试找到一种在不是UI线程的线程上排队任务的简单方法。
我有一个BroadcastReceiver,每次拍摄图像时都会响应Intent,并在每次发生时通知我的服务。服务必须进行一些处理(缩放和旋转图像),我想在新线程上执行此操作(该服务在与我的主Activity相同的线程上运行)。所以我一直在寻找AsyncTask。
我的问题是,如果在完成前一个图像之前拍摄下一个图像,我将同时运行两个AsyncTasks,我不希望这样。我想排队下一个的处理,直到第一个完成。
所以基本上我想要两个线程。一个是标准的UI线程,另一个是我的工作线程,我可以在其中执行任务队列。
最好的方法是什么?
答案 0 :(得分:4)
对于此类问题,我有一个BroadcastReceiver,每次拍摄图像时都会响应Intent,并在每次发生时通知我的服务。服务必须进行一些处理(缩放和旋转图像),我想在新线程上执行此操作(该服务在与我的主Activity相同的线程上运行)。所以我一直在寻找AsyncTask。
IntentService
是一个很好的解决方案,因为它将工作队列与Service
中的后台线程相结合。您只需覆盖onHandleIntent()
即可完成实际工作。
我的问题是,如果在完成前一个图像之前拍摄下一个图像,我将同时运行两个AsyncTasks,我不希望这样。我想将下一个的处理排队,直到完成第一个。
IntentService
一次只能处理一个Intent
。