Android StartService和BindService
来源:互联网 发布:网络对交流的负面影响 编辑:程序博客网 时间:2024/05/10 23:40
一、Service相关方法
- startService(),开启一个服务,可以在系统后台Running Apps里面看到服务在运行,不依赖于具体的某个组件,开启后会调用Service的onStartCommand()方法。
- stopService(),停止一个服务,停止后Running Apps里面看不到服务在运行。
- bindService(),绑定一个服务,绑定到具体组件上——Activity, Service, ContentProvider(BroadcastReceiver不行),会调用Service的onBind()/onRebind()方法,绑定时需要传入实现了ServiceConnection的对象,Service连接成功时会调用onServiceConnected()方法。 一个Service的onBind()/onUnbind()方法只会在第一个绑定它的组件绑定/解绑时执行。
- unBindServce(),解绑一个服务,会将服务从相应组件上解绑,会调用Service的onUnBind()方法。
二、Service生命周期
startService()可以看作开启了一个服务,只有调用stopService()或stopSelf()才可以将其停止。
bindService()可以看做将服务绑定到组件中,生命周期随组件而定,直到组件销毁或者unBindService()后才消失。当没有startService时,bindService()首先会创建一个Service再进行绑定。如果已经有开启的Service,则会直接绑定。
- 调用startService()后会执行onCreate()——>onStartCommand(),onCreate()只会执行一次,再次调用startService()只会执行onStartCommand()。调用stopService()后执行onDestroy()停止Service。
- 调用bindService()后会执行onCreate()——>onBind()——>onServiceConnected(),同一组件只能绑定同一Service一次。调用unBindService()后执行onUnbind()——>onDestroy()停止。
- 先调用startService(),会执行onCreate()——>onStartCommand()来启动Service,再调用bindService()会执行onBind()——>onServiceConnected()将Service绑定到组件中。然后
- 调用unBindService()会执行onUnBind()来解除绑定,但此时Service并没有停止,调用stopService()后会执行onDestroy(),此时Service才停止。
- 调用onStopService()后Service因为与组件绑定不会立即停止, 调用unBindService()后会执行onUnbind()——>onDestroy(),此时Service停止。
- 先调用bindService(),再调用startService(),结果与3类似。
- 一个Service的onBind()/onUnbind()方法只会在第一个绑定它的组件绑定/解绑时执行。例如Activity1调用了bindService(),那么onBind()方法会被调用,此时开启Activity2,再次调用bindService()则不会执行onBind()方法,而只会调用onServiceConnected()方法,此时调用unBindService()也不会调用onUnbind()方法,只有Activity1调用unBindService()才会执行onUnbind方法()。
onRebind()方法:当一个Service存在时,调用bindService()方法绑定,会调用onBind(),然后调用unBindService()方法解除绑定,会调用onUnbind(),此时如果再调用bindService绑定时(不管绑定者是不是当前组件),则会调用onServiceConnected()——>onRebind()方法。
具体的生命周期图如下图所示:
Demo地址:http://download.csdn.net/detail/kasogg/9256869
0 0
- Android StartService和BindService
- Android startService 和 bindService
- Android startservice和bindservice
- android 开发StartService 和BindService
- Android的startservice和bindservice
- Android的startservice和bindservice
- Android中BindService和StartService
- Android Service中的startService和bindService
- android startService和bindService的理解
- 深入理解Android的startservice和bindservice
- 深入理解Android的startservice和bindservice
- 深入理解Android的startservice和bindservice
- 深入理解Android的startservice和bindservice
- 深入理解Android的startservice和bindservice
- 深入理解Android的startservice和bindservice
- 深入理解Android的startservice和bindservice
- 深入理解Android的startservice和bindservice
- 深入理解Android的startservice和bindservice
- Mysql开发使用实用笔记
- 有关custom container of view controllers
- css 制作三角形
- Eclipse的Code Templates设置(如何设置reformat code)
- java 静态方法和实例方法的区别
- Android StartService和BindService
- 图片上传以及保存
- IOS OC 类别category浅析
- SQLServer 可更新订阅的订阅库数据未同步到发布库查看
- Shader 学习笔记 20151110
- 在 idea 中用 maven 构建 web 项目
- 大数据概念
- parseSdkContent failed Could not initialize class android.graphics.Typeface
- SpringMVC视图解析器