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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

认真的小尹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值