理解Service

1.Service的start和bind有何区别
(1)start和bind的生命周期不一样,通过start启动的服务,会执行oncreate和onstartcommand,多次调用start只会执行一次oncreate,但会多次执行startcommand
在这里插入图片描述
而bindservice会执行oncreate和onbind,多次调用bind并不会在执行生命周期,只会执行一次。
在这里插入图片描述
(2)start和bind的状态不一样,start启动的服务和activity没有关系,两者之间不通过一些方式无法进行交互,而且activity的销毁,如果没有调用stop,那么service会一直存在。而bindservice启动的服务,和当前activity进行绑定,如果activity销毁,服务也会跟着销毁,会走unbind,ondestory,而且bind启动的服务,能够跟activity进行交互。
2、同一个service,先startservice 然后bindservice 应该怎么停止掉
先startservice然后bindservice的生命周期如下
在这里插入图片描述
如果只调用stopservice或者unbindservice,那么该服务都不会停止,所以如果想停止服务,只能stop和unbind一起调用,没有先后顺序
在这里插入图片描述
3、service的onStartCommand的返回值的意义
startCommand有3个返回值分别是
(1)START_STICKY
如果方法返回该值,那么如果当service被销毁的时候,会重新启动此service执行startcommand方法,但是对应的intent会是null。
(2)START_NOT_STICKY
如果方法返回该值,那么service被销毁之后除非重新调用startservice不然不会再重新启动
(3)START_REDELIVER_INTENT
这个和第一个返回一样,不同的是这里的intent会保留,并不是null。
4、service的生命周期都运行在哪个线程里
service的所有生命周期都运行在主线程里,只有intentservice运行在子线程里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值