android中的service,intentService有什么区别?

vij*_*imi 23 android android-service android-asynctask intentservice

Android ServiceIntentServiceAndroid 之间有什么区别?

Android AsyncTaskIntentServiceAndroid 之间有什么区别?

GVi*_*i82 35

1.服务和IntentService之间的区别

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

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

onHandleIntent(Intent intent)
Run Code Online (Sandbox Code Playgroud)

您可以在哪里管理所有传入的请求.

看一下文档,您可以详细了解它的IntentService功能:

  • 创建一个默认的工作线程,该线程执行所有交付的意图,以onStartCommand()与应用程序的主线程分开.
  • 创建一个工作队列,一次将一个意图传递给您的onHandleIntent()实现,因此您永远不必担心多线程.
  • 在处理完所有启动请求后停止服务,因此您永远不必打电话stopSelf().
  • 提供onBind()返回null的默认实现.
  • 提供默认实现onStartCommand(),将意图发送到工作队列,然后发送到您的onHandleIntent()实现.

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

2. AsyncTask和Service之间的区别

它们是两个不同的概念.

服务:可以作为没有界面的活动.它适用于长时间运行.

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