Service的两种启动方式与区别

简介: 分享一下Service的启动知识

Service的启动方式:startService() 和 bindService()

startService()

public abstract void startService(Intent service)

参数

Service要启动的服务程序的名称


方法

该方法会调用 Service 中的 onCreate() 和 onStartCommand() 方法来启动一个后台 Service,当 Service 销毁时直接调用 onDestroy() 方法


bindService()

public abstract boolean bindService(Intent service,ServiceConnection conn,int flags)

参数

service 是定义要绑定的服务程序的名称


conn是当服务程序启动和停止时,负责接收信息的接口程序


flags是设置绑定的选项,可以是0、BIND_AUTO_ CREATE、BIND_DEBUG_UNBIND、BIND_NOT_FOREGROUND、BIND_ABOVE_ CLIENT、BIND_ ALLOW_OOM_MANAGEMENT 或者 BIND_WAIVE_PRIORITY


方法

该方法通过 bindService() 方法启动 Service,则其生命周期受其绑定对象控制。一个 Service 可以同时绑定到多个对象上,当没有任何对象绑定到 Service 上时,该 Service 会被系统销毁


两种启动方式的区别

1.  startService只是启动Service,启动它的组件(如Activity)和Service并没有关联,只有当Service调用stopSelf或者其他组件调用stopService服务才会终止


2.  bindService方法启动Service,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止,大有“不求同时生,必须同时死”的特点


3.  bindService方法启动服务,其他组件可以通过回调获取Service的代理对象和Service交互,而这两方也进行了绑定,当启动方销毁时,Service也会自动进行unBind操作,当发现所有绑定都进行了unBind时才会销毁Service


目录
相关文章
|
5月前
关于systemd自定义,一个service 启动多个实例
关于systemd自定义,一个service 启动多个实例
86 2
|
6月前
|
Java Android开发
Service的启动过程
Service的启动过程
38 2
|
11月前
|
Kubernetes 监控 Cloud Native
k8s 自身原理之 Service
k8s 自身原理之 Service
|
Linux Shell 网络安全
服务停止后,自启动的service怎么写
当服务停止后,你可以通过在特定目录中创建一个.service文件来实现自启动。下面是一个示例: 1. 打开终端或者SSH连接到CentOS服务器上。 2. 进入`/etc/systemd/system/`目录。这是存放系统服务的位置,你可以将你的自启动服务文件放在这里。 3. 使用文本编辑器(如vi或nano)创建一个新的.service文件,文件名可以是任意的以`.service`结尾。 ```bash sudo vi myservice.service ``` 在文件中添加以下内容: ``` [Unit] Description=My
129 0
|
Android开发
深入剖析Android四大组件(二)——Service服务之启动与绑定(二)
深入剖析Android四大组件(二)——Service服务之启动与绑定(二)
289 1
深入剖析Android四大组件(二)——Service服务之启动与绑定(二)
|
Android开发
深入剖析Android四大组件(二)——Service服务之启动与绑定(一)
深入剖析Android四大组件(二)——Service服务之启动与绑定(一)
267 0
深入剖析Android四大组件(二)——Service服务之启动与绑定(一)
|
Kubernetes 网络协议 应用服务中间件
K8S 集群核心概念 Service 通过命令行创建 Service | 学习笔记
快速学习 K8S 集群核心概念 Service 通过命令行创建 Service
424 0
K8S 集群核心概念 Service 通过命令行创建 Service  | 学习笔记
|
Apache Windows
Apache service monitor下无服务可供启动
Apache service monitor下无服务可供启动
243 0