【发布时间】:2015-10-05 17:42:15
【问题描述】:
Service 和 Android 中的 IntentService 有什么区别?
AsyncTask 和 Android 中的 IntentService 有什么区别?
【问题讨论】:
标签: android android-asynctask android-service intentservice
Service 和 Android 中的 IntentService 有什么区别?
AsyncTask 和 Android 中的 IntentService 有什么区别?
【问题讨论】:
标签: android android-asynctask android-service intentservice
1. Service 和 IntentService 的区别
Service:它是 Android 服务的基类,您可以扩展它来创建任何服务。 由于服务在 UI 线程内运行,因此需要您创建一个工作线程来执行其工作。
IntentService:它是Service 的子类,可简化您的工作。它已经在工作线程中工作,并且可以接收异步请求。因此,您无需手动创建它,也无需担心同步问题。您可以简单地扩展它并覆盖该方法:
onHandleIntent(Intent intent)
您可以在其中管理所有传入的请求。
看看documentation,你可以详细了解IntentService为你做了什么:
onStartCommand() 的意图,独立于应用程序的主线程。onHandleIntent() 实现,因此您无需担心多线程问题。stopSelf()。onBind() 的默认实现。onStartCommand() 的默认实现,将意图发送到工作队列,然后发送到您的onHandleIntent() 实现。因此,如果您需要更多控制权,可以使用Service 类,但通常对于简单服务,最佳解决方案是IntentService。
2。 AsyncTask 和 Service 的区别
它们是两个不同的概念。
Service: 可以设计为没有界面的 Activity。它适用于长时间运行的操作。
AsyncTask: 是一个特殊的类,它封装了一个工作线程(执行后台操作),促进与 UI 线程的交互,而无需直接管理线程或处理程序。
【讨论】:
AsyncTask 有很多话要说,并且有相关文档。我试图保持简短,只是指出与Service 的区别