Android:异步任务与服务

标签 android

为什么我在这里阅读了很多关于 AsyncTask 的大多数问题的答案和装载机,但没有关于 Services ?服务是否只是不太为人所知,或者它们是否已被弃用或有一些不好的属性或什么?有什么区别?

(顺便说一句,我知道还有其他关于它的线程,但没有一个真正说明明确的差异,可以帮助开发人员轻松决定他是否更好地使用一个或另一个来解决实际问题。)

最佳答案

在某些情况下,可以使用 AsyncTaskService 完成相同的任务,但通常一个比另一个更适合任务。

AsyncTask 专为一次性的耗时任务而设计,这些任务无法在 UI 线程中运行。一个常见的例子是在按下按钮时获取/处理数据。

Service 被设计为在后台持续运行。在上面按下按钮时获取数据的示例中,您可以启动一个服务,让它获取数据,然后停止它,但这样做效率很低。使用将运行一次、返回数据并完成的 AsyncTask 会快得多。

但是,如果您需要在后台持续执行某些操作,Service 是您的最佳选择。这方面的示例包括播放音乐、不断检查新数据等。

此外,正如 Sherif 已经说过的,服务不一定会在 UI 线程之外运行。

在大多数情况下,Service 用于您想要运行代码时,即使您的应用程序的 Activity 未打开。 AsyncTask 旨在使从 UI 线程执行代码变得异常简单。

关于Android:异步任务与服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6957775/

相关文章:

android - 使用过滤器打开联系人选择器

android - READ_EXTERNAL_STORAGE 在应用程序重新启动之前未分配

android - FreeSwitch 使用 API 创建分机/SIP 用户

android - 如何将 View 发送到后面?如何以编程方式控制 z 顺序?

java - 将大量值推送到 android 中的 firebase

java - 如何允许 Sprite 只从一侧移动到另一侧?

java - 如何对 drupal 表执行 Volley PUT

android - 帮助解决 API 级别 5 上的 NullPointerException

android - 在键盘文本后面获取灰色补丁?

android - stagefright CameraSource::read 在 Samsung Galaxy S2 上返回小帧(20 字节)