2011-10-18 79 views
1

我在我的活动中有很多异步任务,我需要为每次调用重写AsyncTask来完成异步。Android绑定服务与AsyncTask

我可以使用BoundService + AIDL来替换所有的AsyncTasks,或者我只需要使用AsyncTask来完成它?

回答

2

服务在后台运行,但仍在主线程(也称为UI线程)中运行,您将收到ANR异常。根据API here

有关服务类最混乱实际上都是围绕着它不是什么:

  • 服务没有单独的进程。服务对象本身并不意味着它在自己的进程中运行;除非另有说明,否则它与它所属的应用程序在相同的过程中运行。
  • 服务不是线程。它不是一种自己的方式来处理主线程(以避免应用程序不响应错误)。

您可以使用服务,但您仍然需要在服务或活动中实现您的线程逻辑,如果您希望某些东西在单独的线程中运行。

1

服务是守护进程,AsynkTask是后台线程