具有任务队列的Android后台服务

时间:2011-09-13 04:49:00

标签: android

我的应用需要后台服务,我可以在那里提交任务。这些任务可能非常通用,可能涉及下载源,一次获取位置或获取资源。此服务需要与活动进行最少的交互,应该在应用程序启动时启动,如果没有待处理的任务则应该退出队列中。

这是个好主意吗?我该如何设计这样的服务?欢迎提出所有建议

3 个答案:

答案 0 :(得分:4)

希望这种架构能够帮助您:

  1. 如果您想在活动结束后执行任务,请使用startService()否则如果您想在活动结束后立即终止所有任务,请使用bindService()

  2. 当您调用startservice()时,如果服务已在运行,则不会调用其oncreate()方法,但每次调用onStartCommand()时都会调用startservice()。您可以使用此属性。

  3. 您可以实现一个静态方法,可以从您的活动中访问该方法以将任务放入其中,当您以静态方法接收调用时,您可以启动执行任务的线程。

  4. 注意:不要忘记释放服务中的所有资源(线程等),因为android不会为你做。

    如果您的活动已完成,那么在完成任务后,您可以使用stopSelf()来获取服务并释放所有资源。

    如果符合您的需要,您可以尝试使用IntentService。查看this了解详情。

答案 1 :(得分:0)

如果您需要一次处理一个请求,那么IntentService可能会有所帮助。它们会自动排队到工作线程。

答案 2 :(得分:0)

Android库Goro可能会有帮助。

它允许您组织多个队列中的任务并在服务上下文中运行它们。 默认情况下,它使用AsyncTask中用于实际执行任务的相同线程池。