【问题标题】:What is the difference between service, intentService in android? [duplicate]android中的service、intentService有什么区别? [复制]
【发布时间】:2015-10-05 17:42:15
【问题描述】:

Service 和 Android 中的 IntentService 有什么区别?

AsyncTask 和 Android 中的 IntentService 有什么区别?

【问题讨论】:

    标签: android android-asynctask android-service intentservice


    【解决方案1】:

    1. Service 和 IntentService 的区别

    Service:它是 Android 服务的基类,您可以扩展它来创建任何服务。 由于服务在 UI 线程内运行,因此需要您创建一个工作线程来执行其工作。

    IntentService:它是Service 的子类,可简化您的工作。它已经在工作线程中工作,并且可以接收异步请求。因此,您无需手动创建它,也无需担心同步问题。您可以简单地扩展它并覆盖该方法:

    onHandleIntent(Intent intent)
    

    您可以在其中管理所有传入的请求。

    看看documentation,你可以详细了解IntentService为你做了什么:

    • 创建一个默认工作线程,该线程执行所有发送到onStartCommand() 的意图,独立于应用程序的主线程。
    • 创建一个工作队列,一次将一个意图传递给您的 onHandleIntent() 实现,因此您无需担心多线程问题。
    • 在处理完所有启动请求后停止服务,因此您无需调用stopSelf()
    • 提供返回 null 的 onBind() 的默认实现。
    • 提供onStartCommand() 的默认实现,将意图发送到工作队列,然后发送到您的onHandleIntent() 实现。

    因此,如果您需要更多控制权,可以使用Service 类,但通常对于简单服务,最佳解决方案是IntentService

    2。 AsyncTask 和 Service 的区别

    它们是两个不同的概念。

    Service: 可以设计为没有界面的 Activity。它适用于长时间运行的操作。

    AsyncTask: 是一个特殊的类,它封装了一个工作线程(执行后台操作),促进与 UI 线程的交互,而无需直接管理线程或处理程序。

    【讨论】:

    • 这里有很好的解释stackoverflow.com/a/15772151/1533670
    • 这个解释很好,但如果你能更详细地了解 AsyncTask(尤其是缺点),那就更好了。
    • 关于AsyncTask 有很多话要说,并且有相关文档。我试图保持简短,只是指出与Service 的区别
    猜你喜欢
    • 2011-12-07
    • 1970-01-01
    • 2019-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多