android单个服务,用于多个任务

时间:2014-02-24 17:34:14

标签: android android-asynctask android-service

如何在Android中执行多项后台任务? 我的活动中有三个复选框。图像,音频和视频。所以我有3个很长的后台任务(彼此独立)要做。所以,我写了一个上传图像的服务类。我的问题是,对于上传视频和音频的第二和第三个任务,我应该再制作两个服务类吗?如果用户一次检查三个框,那么执行这三个任务的最佳方法是什么?

我的第二个问题是我已经看到有人在服务中使用异步任务进行长时间后台处理。我想知道你是否正在使用服务,为什么需要异步任务?这是在服务中使用asynctask进行此类任务的更好方法吗?

2 个答案:

答案 0 :(得分:0)

服务在主线程上运行。认为服务在不同的线程上运行是一个巨大的错误。这就是你需要AsyncTask()或Runnable()或Thread()的原因。

因此,如果您已经决定创建服务,那么最好的办法就是在服务中创建1,2或3个线程。

但问问自己为什么你首先使用服务?即使应用程序不在前台,服务也可以工作。所以也许您根本不需要服务,您可以在活动本身中创建后台线程。

答案 1 :(得分:0)

服务专为长时间运行的后台任务而设计。服务的用例是在应用程序处于后台时运行。或者当您在“活动”之间切换时,任务不会被杀死。

但它像UI一样在活动中运行。这就是为什么你必须使用Thread或AsyncTask来阻止UI-Thread。如果您在一个服务中为不同的作业提供一些独立的Threads / AsyncTasks,那就没问题了。在您的情况下,每个Checkbox都可以在此服务中运行不同的线程。