Service篇相关总结

一 Service:

  1.启动方式:

     (1)Context.startService();

       生命周期执行流程:

      第一次启动: 

      08-25 13:49:43.038  9531  9531 D haohaoding--: onCreate()
       08-25 13:49:43.038  9531  9531 D haohaoding--: onStartCommand()
       08-25 13:49:43.038  9531  9531 D haohaoding--: onStart()startId:1 

        反复重启只会执行

      08-25 13:49:43.038  9531  9531 D haohaoding--: onStartCommand()
       08-25 13:49:43.038  9531  9531 D haohaoding--: onStart()startId:1 

       并且startId是递增的,其生命周期不会跟随Context的变化而变化,独立存在的,Content销毁被启动的Service不会跟随被销毁,除非调用Context.stopService(); 或者应用程序被kill。当执行Context.stopService()时,Service的onDestroy()方法会被执行,Service销毁。但是应用程序被kill掉不会触发Service的onDestroy()不会被执行。

 

(2)Context.bindService();

     第一次启动:
08-25 14:02:42.982  9531  9531 D haohaoding--: onCreate()
08-25 14:02:42.983  9531  9531 D haohaoding--: onBind()
反复重启不会创建新的service并且不会重新执行任何生命周期方法,其生命周期与Context的生命周期绑定,并且Context销毁会触发service的onDestroy()的执行,同样的Context.unbindService()会触发Service的onDestroy()的执行,但是unbindSerrvice()只能执行一次,多次执行会崩溃,其主要特点是生命周期与Context共存亡,且新创建时会触发onBind()的执行。

 

2.对比:利用startService可以在任意一个Activity里来控制被启动过的service来做不同的事情,而不是网上说的完全失去了控制,因为我们完全可以利用intent带过去不同的值,在service里的onStartCommand里来判断intent里带来的值,从而达到控制的效果,经过测试时完全可以的,因为不同的activity之间利用startService启动的service是同一个对象实例。

 

3.场景:

一般说来,bindService使用的场景比较多。另外,混合使用的场景下,只有当所有的调用者释放掉一个service的bind引用(即unbindService),这个时候再用stopService(或者先stopService再释放所有的bind引用),这个service才会结束生命周期。

 

 

 

二 IntentService:

https://blog.csdn.net/b1480521874/article/details/94987641

https://www.cnblogs.com/it-tsz/p/11601265.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值