Service是能够在后台执行长时间运行操作,并且不提供用户界面的应用程序组件。
服务可以分为两类:
- Started
- Bound
服务可以是以上一种,也可以是同时属于。重点在于是否实现一些回调方法。
onStartCommand()方法允许组件启动服务,onBind()方法允许组件绑定服务。
创建Started Service
Started Service是由其他组件调用startService()方法启动的,这导致服务的onStartCommand()方法被调用。
- 继承IntentService类:因为多数服务不必同时处理多个请求,简化启动服务的实现。工作队列
- 继承Service类:服务处理多线程
创建Bound Service
实现绑定服务时,最重要的是定义onBind()回调方法返回的接口,共有3种方式:
- 继承Binder类:服务仅用于私有应用程序时。如果服务可以用于其他应用程序或者访问独立进程时,不能使用。
- 使用Messenger:接口跨进程工作。使用Messenger是执行IPC最简单方式,因为Messenger类将所有请求队列化到单独的线程。
- 使用AIDL:Android接口定义语言。