service生命周期

一.服务分两种启动和绑定:

1:本地服务
Local Service 用于应用程序内部。在Service可以调用Context.startService()启动,调用Context.stopService()结束。 在内部可以调用Service.stopSelf() 或 Service.stopSelfResult()来自己停止。无论调用了多少次startService(),都只需调用一次 stopService()来停止。(启动服务:应用组件通过startService(intent)的方式启动)

2:远程服务
Remote Service 用于android系统内部的应用程序之间。可以定义接口并把接口暴露出来,以便其他应用进行操作。客户端建立到服务对象的连接,并通过那个连接来调用服 务。调用Context.bindService()方法建立连接,并启动,以调用 Context.unbindService()关闭连接。多个客户端可以绑定至同一个服务。如果服务此时还没有加载,bindService()会先加 载它。(绑定服务:应用组件通过 bindService(intent, conn, Context.BIND_AUTO_CREATE)绑定服务)

二.启动服务/绑定服务的区别:

1)启动的服务与Activity之间是分离的不能进行通讯,即使启动它的组件被杀死,它仍然可以继续存在;而绑定服务与Activity有关可以进行通讯,与所绑定的组件共存亡。
2)启动的服务可以自杀stopSelf()也可以stopService(),但是绑定的服务只能通过绑定的组件解绑unbindService()。
3)生命周期不同

三.图示

这里写图片描述

  1. 每次onStart()执行,onStartCommand()也执行

  2. 在Service每一次的开启关闭过程中,只有onStart可被多次调用(通过多次startService调用),
    其他onCreate,onBind,onUnbind,onDestory在一个生命周期中只能被调用一次。

  3. 回到桌面,服务仍然在后台运行。

  4. 在启动服务和绑定服务后,只有解绑与终止服务共同调用,才能真正终止服务。

  5. 多个请求要启动Service时,系统对应地调用onStartCommand(),从而可以并发的执行多个请求。

  6. onCreate(): 系统在Service第一次被创建的时候调用该方法,它是再onStartCommand()和onBind()方法之前被调用的。如果这个Service已经在运行了,那么这个函数不会被调用。

  7. onStartCommand(): 其他组件调用startService()来启动一个Service时,系统会调用这个回调函数,该函数执行过后,Service就已经被启动了,并且开始在后独立运行。

  8. onDestroy():系统在一个Service不再被使用,并且准备摧毁的时候调用该方法,它是Service收到的最后一个被调用的方法。在这里可以进行一些清除工作,例如线程、注册的监听、以及接收器等等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值