服务service生命周期及方法使用
2016-11-23 00:14
134 查看
服务service生命周期及方法使用
本文主要从四大组件service的开关绑定的4个方法开始,自己总结出的一些细节特点,供大家参考!如有纰漏和错误请大家指出!如需转载请标明出处,谢谢!—下一篇为《Service交互特征》,同时会上传Demo,敬请期待!startService():开启服务-让服务在后台默默工作
可以重复运行,重复只会运行onStartCommand返回ComponentName(标识唯一的应用程序组件)对象主要成员为包名+完整class类名(可以通过类名查询服务是否运行)
未绑定运行:构造-onCreate-onStartCommand
已绑定运行:onStartCommand
service已经运行:onStartCommand
service运行后即使退出应用,也不会自动停止
服务与应用无法进行数据交互,方法调用等
stopService():停止服务
可重复运行,运行返回boolean-重复运行返回false或标记为停止service已经运行未绑定:onDestroy-销毁内存实例
service已经运行已绑定:无效并返回true-标识为停止
stopSelf();服务自身调用,与stopService功能一致
标记为停止:服务并未停止或销毁,如果一个已启动并标记为停止的服务在完全解绑时彻底销毁
bindService():绑定服务-与服务交互
可以重复运行,但重复运行-每运行成功一次必然回调一次onServiceConnected,onBind()只运行一次服务未开启时:构造-onCreate-onBind-回调onServiceConnected
服务已开启且未绑定时:onBind()-回调
服务已开启且已绑定过:只执行回调
未解绑退出绑定的activity会有报错Log ServiceConnectionLeaked
onServiceDisconnected()只有要非正常结束服务时调用
支持多绑定,服务与应用可以进行数据交互,方法调用等
unbindService()
同一绑定对象不能重复使用,否则报错未绑定运行会抛出异常“Service not registered”,使用时判断是否绑定
未开启(未使用startService)已绑定且无多绑定:onUnBind-onDestroy-销毁内存实例
未开启已绑定且有其它绑定:只解绑(多绑定时只在服务中标记此绑定解除,此时不运行onUnBind)
已开启且完全解绑(多绑定时,没有任何其它绑定):onUnBind,在一次开启和关闭服务过程中只运行一次。
已开启且完全解绑且已标识停止:onUnBind-onDestroy-销毁内存实例
判断服务是否绑定采用在ServiceConnection添加一个boolean成员变量的方式,在onServiceConnected赋值为true;onServiceDisconnected赋值为false;并在unbindService使用时同时调用setBind(false)
未解绑activity退出时:日志报错(运行时异常)并自动运行unbindService
使用注意点
应用与服务交互时使用bindService使用了startService应用退出服务不会停止
绑定后activity退出时自动运行unbindService
解绑时建议先判断绑定状态
服务运行在主线程,耗时任务开子程线运行
在未完全(多绑定)解绑时,stopService和stopSelf起标识停止的作用
以上方法均支持跨进程
跨进程问题后续详解
相关文章推荐
- mysql 使用service mysqld start 提示未识别服务 进入/etc/rc.d/init.d 下面未发现有mysqld解决方法
- BindService的生命周期以及使用方法。
- Android -- service 服务的创建与使用,生命周期
- 使用 WebSphere Service Registry and Repository 实现和执行服务生命周期
- Android -- service 服务的创建与使用,生命周期,电话监控器
- C# Web Service 不使用服务引用直接调用方法
- 服务(Service)的使用方法
- 使用Service的stopSelf()方法来停止服务
- Android 服务(service)的生命周期以及利用bindservice调用服务里面的方法
- Android服务Service详解(作用,生命周期,AIDL)系列文章--服务绑定和开启混合使用
- Angularjs自定义服务~使用Module的service方法
- 为什要使用BindService?为了调用服务中的方法
- Android Service的生命周期及使用方法
- Android -- service 服务的创建与使用,生命周期,电话监控器
- 调用android非unbind的服务中的方法(不使用bindService启动的服务)
- 关于服务Service使用startService()函数启动时的生命周期
- 说说在Android如何使用服务(Service)的方法
- 使用Java Service Wrapper 把Java程序作为Windows系统服务
- 使用Axis部署Web服务时的常见问题及其解决方法(转)
- C#使用异步Socket实现TCP网络服务的CS的通讯构架(二)使用方法