为什么我在这里阅读了很多关于 AsyncTask
的大多数问题的答案和装载机,但没有关于 Services ?服务是否只是不太为人所知,或者它们是否已被弃用或有一些不好的属性或什么?有什么区别?
(顺便说一句,我知道还有其他关于它的线程,但没有一个真正说明明确的差异,可以帮助开发人员轻松决定他是否更好地使用一个或另一个来解决实际问题。)
最佳答案
在某些情况下,可以使用 AsyncTask
或 Service
完成相同的任务,但通常一个比另一个更适合任务。
AsyncTask
专为一次性的耗时任务而设计,这些任务无法在 UI 线程中运行。一个常见的例子是在按下按钮时获取/处理数据。
Service
被设计为在后台持续运行。在上面按下按钮时获取数据的示例中,您可以启动一个服务,让它获取数据,然后停止它,但这样做效率很低。使用将运行一次、返回数据并完成的 AsyncTask
会快得多。
但是,如果您需要在后台持续执行某些操作,Service
是您的最佳选择。这方面的示例包括播放音乐、不断检查新数据等。
此外,正如 Sherif 已经说过的,服务不一定会在 UI 线程之外运行。
在大多数情况下,Service
用于您想要运行代码时,即使您的应用程序的 Activity
未打开。 AsyncTask
旨在使从 UI 线程执行代码变得异常简单。
关于Android:异步任务与服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6957775/