【问题标题】:Service can do ,but Asynctask can not?Service 可以,Asynctask 不行吗?
【发布时间】:2025-12-13 03:35:01
【问题描述】:

我已经阅读了 Service,Intent ServiceAsynctask 之间的区别,但我还没有弄清楚只有服务工作但 Asynctask 失败的任何情况。

我注意到了几点:

  1. Asynctask 可以用作绑定或启动的服务。

  2. Asynctask 可以在后台运行,如果用户切换到不同的应用程序,那么 Asynctack 也可以工作。

  3. Asynctask 可以向我们的活动发送消息。

  4. 如果启动 asynctask 的组件被销毁,那么 asynctask 也会在后台执行,我们可以使用其onPostexecute() 方法启动另一个应用程序组件。

所以请告诉我一些我们必须使用 Service 的功能,我们无法使用 Asynctask 实现这些功能。

【问题讨论】:

  • 其实我觉得你可以比较一下Service和Intent Service,但是……Asynctask通常在Service里面工作。 AsyncTask 不是独立的。
  • 正如@soulreaver 所说,它们是不同的。你无法比较它们。
  • @soulreaver 我只是在询问我们何时必须使用服务的情况。我可以使用异步任务的后台工作来实现所有活动。
  • 哦,那你当然不能。阅读@Adhikari Bishwash 的回答。

标签: android service android-asynctask intentservice


【解决方案1】:

当您的应用因内存不足或用户从任务管理器中抛出异常而自动销毁时,您的异步任务也会被销毁,但在这种情况下服务不会被销毁。

【讨论】:

    【解决方案2】:

    意图服务,服务几乎相同,你不应该比较它们。您可以比较服务异步任务。 service 和 async service 的区别在于 asynctask 是 ui-thread blocker 而 service 不是。服务可以完全在后台运行。它的问题与用户界面设计更相关,以登录用例为例,它应该异步发生,而不是在后台。这里 ui 应该等待用户的光标,但是上传文件可以在后台进行,用户只需要启动进程并继续执行其他任务。

    希望你清楚。

    【讨论】: