startservice和bindservice的区别

之前的笔记,放上来做个记录。不当之处请大家指教!谢谢~


这两个方法都能启动服务,两者的使用场合不同

使用StartService()这个方法启动服务,调用者与服务之间没有关联,即使调用者退出后,服务仍然运行。

使用bindservice()启动服务,调用者与服务绑定在一起,调用者一旦退出了,服务也就终止了,有“不求同生,必须同死”的特点。

===============================

用StartService()启动服务是,服务尚未创建时,系统会先去调用服务的onCreate()方法,在调用onStart()方法。假使服务已经被创建了,多次使用StartService()方法不会导致多次创建服务,但会导致多次创建onStart()方法。如果服务是用onStart()方法启动,那么只能用stopService()来停止服务。服务结束时会调用onDestroy()方法。

用bindService()方法启动服务,在服务尚未创建时,系统先调用服务的onCreate()方法,接着调用onBind()方法,这时候调用者和服务绑定在一起,调用者退出时,系统会调用onUnbind()方法,接着会调用onDestroy()方法。如果调用bindService()前服务已经绑定多次调用bindService()方法并不会导致多次创建服务及绑定(也就是onCreate()方法和onBind()方法并不会被多次调用)。如果调用者希望与正在绑定的服务接触绑定,可以调用unbindservice()方法。调用该方法也会导致系统调用服务的onUnbind()和onDestroy()方法。

===============================

混合使用bindService()和StartService()方法

Service的onCreate()方法只会被调用一次

如果先bind了,那么start的时候会直接运行Service的onStart()方法。

如果你先start了,那么bind就直接onBind()

如果你先bind上了,那就stop不了,要先Unbindservie,再stopService



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值