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,可以进行对比!