当前位置:网站首页>Service的两种启动方式与区别

Service的两种启动方式与区别

2022-08-11 06:44:00 是小A

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

原网站

版权声明
本文为[是小A]所创,转载请带上原文链接,感谢
https://blog.csdn.net/Ai1114/article/details/125234516