1

我的活动中有很多异步任务,我需要为每个调用重写 AsyncTask 以异步执行它。

我可以用 BoundService + AIDL 替换所有 AsyncTask,还是只需要用 AsyncTask 替换?

4

2 回答 2

2

服务在后台运行但仍在主线程(AKA.UI 线程)中运行,您将收到 ANR 异常。根据这里的API :

关于 Service 类的大多数困惑实际上都围绕着它不是什么:

  • 服务不是一个单独的进程。Service 对象本身并不意味着它在自己的进程中运行;除非另有说明,否则它在与其所属的应用程序相同的进程中运行。
  • 服务不是线程。它本身并不是一种脱离主线程工作的方法(以避免应用程序无响应错误)。

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

于 2011-10-18T20:31:38.743 回答
2

Service 是一个守护进程,AsynkTask 是后台线程

于 2013-03-12T10:26:00.123 回答