service有两种开启的方式,对应的也存在两种不同的生命周期
第一种就是通过 startService(intent)来开启一个service ,
这时候service会一直在服务器后台运行,直到手工从手机中关闭进程
或者是在activity中调用stopSercive(intent)来关闭service
这个service不会随着activity的关闭而关闭,哪怕actvity内存被回收了,service一样会继续运行
另外一种就是通过绑定的方式来开启一个service
bindService(intent , conn , flag)
第一个意图很好理解了,
第二个却是一个对象 虽然在安卓开发中 使用匿名内部类和吃饭一样常见,
但是这里不要使用匿名内部类,这个对象其实是一个接口需要重写里面的两个方法
其中一个方法接收从service返回的返回值。
第三个参数是int类型的 “标记” 用于标记打开service的状态
具体有
0, BIND_AUTO_CREATE, BIND_DEBUG_UNBIND, BIND_NOT_FOREGROUND,
BIND_ABOVE_CLIENT, BIND_ALLOW_OOM_MANAGEMENT, BIND_WAIVE_PRIORITY.
然后就绑定了一个服务,但是这个服务在activity关闭的时候,就会关闭。
如果不做任何操作 service一样会关闭,但是开发过程中会刷刷报错,虽然不影响使用,
但是作为完美主义者的我们,还是忍不住要去解决这个问题。
所以就需要用到解绑服务了。
unbindService(conn);
这里的conn很面熟啊 ,对 就是刚开始绑定服务时候的那个对象。
等解绑了,然后再去关闭activity,发现logcat界面一片空白。
处女座来了也不怕了。 |
|