您的位置:首页 > 其它

[置顶]service之我见

2015-12-30 13:56 260 查看
以下是小编在开发过程中对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,可以进行对比!
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: