service 生命周期

 
服务的生命周期跟启动服务的方法有关:
l  当采用context.startService()方法启动服务,与之有关的生命周期方法
onCreate()à onStart() à onDestroy()
实例个数,实例化时机,实例化间接方式,实例化后会调用的方法:一个应用中,一个service服务只有一个实例,类似一个web应用只有一个servlet实例,当第一个执行startService()方法的客户端,Service将会被实例化,并同时调用onCreate(),onStart().之后再有执行startService的客户端,服务将不会被实例化,也不会调用onCreate(),只是会调用start().
何时死:该Se rvice将会一直在后台运行,而不管对应程序的Activity是否被销毁,直到被调用stopSe rvice。当然如果系统资源不足,and roid系统也可能结束服务。
l 当采用context.bindService()方法启动服务,与之有关的生命周期方法
onCreate()à onBind() à onUnbind() à onDestroy()
何时生:只有采用context.bindService()方法启动服务时才会回调onBind()方法。和上面的一样,第一个执行bindService方法的客户端, Service将会被实例化,service对象会依次调用,onCreate()和onBind(),当再有Activity客户端执行bindService()来绑定服务时,Service不会被实例,也不会调用任何一个方法,sdk会将缓存的Builder对象返回给客户端。
何时死:当所有的Activity客户端都执行了ubindService()解除绑定,或者所有的Activity客户端生命周期都结束时(我猜内部自动调用ubindService),导致此时没有任何一个客户端与service相连接,service对象会被销毁。结束生命,并依次调用onUnbind() à onDestroy()
onUnbind()只有采用context.bindService()方法启动服务时才会回调该方法。
如果先采用startService()方法启动服务,然后调用bindService()方法绑定到服务,再调用unbindService()方法解除绑定,最后调用bindService()方法再次绑定到服务,触发的生命周期方法如下:onCreate()àonStart()àonBind()àonUnbind()[重载后的方法需返回true]àonRebind()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值