[置顶]service之我见

以下是小编在开发过程中对service的一些体会。

  1.service相对于activity来说,它是没有具体的界面的,它是一个后台工作的组件。ex:背景音乐等!

  2.在activity中启动service是用startservice(intent),停止service是stopservice(intent)

  3.service跟activity一样也有它自己的生命周期如下图

  以下是有客户绑定了的service的生命周期

  

  4.如果service是被开启的,那么它的活动生命周期和整个生命周期一同结束。

  如果service是被绑定的,它们它的活动生命周期是在onUnbind()方法返回后结束。

  注意:尽管一个被开启的service是通过调用 stopSelf() 或 stopService()来停止的,没有一个对应的回调函数与之对应,即没有onStop()回调方法。所以,当调用了停止的方法,除非这个service和客户组件绑定,否则系统将会直接销毁    它,onDestory()方法会被调用,并且是这个时候唯一会被调用的回调方法。

  如果你的service被开启并且接受绑定,那么当系统调用你的 onUnbind()方法时,如果你想要在下次客户端绑定的时候接受一个onRebind()的调用(而不是调用 onBind()),你可以选择在 onUnbind()中返回true。

  onRebind()的返回值为void,但是客户端仍然在它的 onServiceConnected()回调方法中得到 IBinder 对象。

  5.每次调用startService(Intent)的时候,都会调用该Service对象的startcommand

  6.在这里做了个小实验,一个service先用startservice,之后在bindservice的话之后stop不会启作用,这样可以说bind的优先级大于start,有bind在start不会进入oncreat,只会进入startcommand!

  7.获取service中的数据,需要获取service中的实例,不能自己new,因为我们要获取的是系统中进行的服务。

  自己写了个简单的demo 下载地址是 https://github.com/xiaoliandroid/MyApplication,可以进行对比!

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值