【Android】Service 的生命周期

  • startService()后,即使调用startService()的进程结束了,Service 仍然还存在,直到有进程调用stoptService(),或者Service 自己自杀stopSelf()了.
  • bindService()后,Service 就和调用bindService()的进程同生共死,当然期间可以调用unbindService()让Service 结束.
  • 两种方式混合使用时,比如说你startService()了,我bindService()了,那么只有你stopService()了而且我也unbindService()了,这个Service 才会被结束。

2011年6月15日补充:

【0】与采用Context.startService()方法启动服务有关的生命周期方法

onCreate() ->onStart() ->onDestroy()

  • onCreate()该方法在服务被创建时调用,该方法只会被调用一次,无论调用多少次startService()或bindService()方法,服务也只被创建一次。
  • onStart() 只有采用Context.startService()方法启动服务时才会回调该方法。该方法在服务开始运行时被调用。多次调用startService()方法尽管不会多次创建服务,但onStart() 方法会被多次调用。
  • onDestroy()该方法在服务被终止时调用。
【1】与采用Context.bindService()方法启动服务有关的生命周期方法

onCreate() ->onBind() ->onUnbind()->onDestroy()

  • onBind()只有采用Context.bindService()方法启动服务时才会回调该方法。该方法在调用者与服务绑定时被调用,当调用者与服务已经绑定,多次调用Context.bindService()方法并不会导致该方法被多次调用。
  • onUnbind()只有采用Context.bindService()方法启动服务时才会回调该方法。该方法在调用者与服务解除绑定时被调用。
  • 如果先采用startService()方法启动服务,然后调用bindService()方法绑定到服务,再调用unbindService()方法解除绑定,最后调用bindService()方法再次绑定到服务,触发的生命周期方法如下:
  • onCreate() ->onStart() ->onBind() ->onUnbind()[重载后的方法需返回true] ->onRebind()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值