Service的启动、绑定,以及生命周期的笔记
来源:互联网 发布:linux杀进程命令 编辑:程序博客网 时间:2024/06/16 00:34
1、有关Service的startService与bindService在各种情形下生命周期的变化
参考:http://blog.csdn.net/qq_22804827/article/details/78609636
需要注意的是,startService
、stopService
、bindService
、unbindService
方法都是Context的成员方法。
Android Developers文章参考:
https://developer.android.com/guide/components/bound-services.html?hl=zh-cn
2、有关onCreate()、onStart()、onBind()等生命周期方法所在的线程
以前面的情景为基础,如果在两个Activity分别开启一个子线程,在其中去startService和bindService,此时,就算是在子线程中执行这两个方法,但是有关Service的生命周期方法都还是会在主线程中执行。
简单的说明原因,就是Service的生命周期方法的调用都有借助到ActivityThread中的H(本质上是一个Handler),通过H的相关方法来实现的,而ActivityThread则是UI线程,即主线程。
具体原因可参见《Android艺术探索》的“Service的工作过程“章节。
3、startCommand()方法返回值
(1)START_STICKY = 1
,当Service已经启动后,如果startCommand方法返回值是这个,则表示如果内存不足Service被系统杀掉,系统会在后续内存空闲时尝试着重新创建这个Service,但是不会再传递上次启动Service时的Intent,onStartCommand中的Intent参数会为null。
(2)START_NOT_STICKY = 2
,系统把Service杀掉后,不会尝试重新创建这个Service。
(3)START_REDELIVER_INTENT = 3
,系统把Service杀掉后,会尝试重新创建这个Service,并且会把之前启动Service的最后一个Intent重新传递回来。
4、有关bindService()方法的第三个参数
第三个参数是一个指示绑定选项的标志。
由于本人暂时能力有限,无法完全正确理解某些标志值的具体含义,翻阅一些博客说得也是一知半解,有兴趣的可以自行去看谷歌官方的文档,避免我在此误导大家。
https://developer.android.com/reference/android/content/Context.html#BIND_AUTO_CREATE
Service的行为和运行模式,其中BIND_AUTO_CREATE和BIND_WAIVE_PRIORITY两个flag在Ice Cream Sandwich也就是Android4.0版本前后有一些区别,主要是: 在4.0之前,Service的优先级被默认视同后台任务,如果设置了BIND_AUTO_CREATE则Service的优先级将等同于宿主进程,也就是调用bindService的进程。 在4.0及以上就完全变了,Service的优先级默认等同于宿主进程,只有设置了BIND_WAIVE_PRIORITY才会使Service的被当做后台任务对待,WAIVE就是放弃的意思嘛。 基于上述区别,必须对不针对4.0以上开发的的App进行兼容。这种App跑在4.0以上时,bindService的时候没有同时设置BIND_AUTO_CREATE则Service应被视为后台任务,那么BIND_WAIVE_PRIORITY会被偷偷加上去。
来自:http://blog.csdn.net/pan11115111/article/details/70236354
补充内容:
如果设置Service于一个单独的进程(具体的设置方法为在AndroidManifest文件中为<service/>
标签添加android:process
属性即可),则其生命周期方法会运行于新建的进程。
具体原因需要参考Binder机制了。
- Service的启动、绑定,以及生命周期的笔记
- Android Service 非绑定Service的生命周期
- Android Service的两种启动方式以及生命周期
- Service 以及它的生命周期
- Service的启动与绑定
- Android开发笔记之Service知识的回顾和总结以及常见的启动方式和生命周期
- 安卓非绑定方式的service生命周期测试
- 【Android笔记】Service的生命周期
- 【Android笔记】Service的生命周期
- 【Android笔记】Service的生命周期
- 【Android笔记】Service的生命周期
- Android笔记:Activity的生命周期以及启动模式
- bindService启动的Service的生命周期
- 什么是Service以及描述下它的生命周期。Service有哪些启动方法,有什么区别,怎样停用Service?
- android90--什么是Service以及描述下它的生命周期。Service有哪些启动方法,有什么区别,怎样停用Service
- 安卓:service,启动service和绑定service生命周期
- Service的生命周期与启动方式
- Service两种启动方式的生命周期
- 集合类的底层实现
- Mybatis接口在service注入失败的解决办法
- 分布式系统的BASE理论
- 月饼 (25).cpp 输出没写出来
- 01.去,过你想要的人生——人生:你的大方向(笔记)
- Service的启动、绑定,以及生命周期的笔记
- 数据库系列-数据库查询
- 解决scrollView嵌套viewpager+listview,scrollview不能滑动的问题
- 关于分布式事务、两阶段提交协议、三阶提交协议
- static synchronized 和 synchronized 的实例
- java 自我知识总结(二十)异常
- 高级三——函数的参数
- Caffe学习之一:Caffe的基本结构
- linux中如何让进程在后台运行