android开发-Service的生命周期
来源:互联网 发布:美国10月非农数据预测 编辑:程序博客网 时间:2024/06/11 05:15
1、启动Service的方式有两种
startService以及bindService
他们各自的生命周期为
startService:onCreate->onCommend 如果多次调用startService方法 那么会多次执行onCommend方法
bindService: onCreate ->onBind 如果其他的Activity也绑定了服务那么 不会调用onBind回调 。
如果activity关闭了连接 是不会调用onUnbind的,除非是 最后一个连接的 也断开了 才会触发onBind 然后执行onDestory
2、混合启动
如果调用了startService方法之后又调用了bindService方法 那么它的执行生命周期是
onCreate->onCommend->onBind
如果先执行了bindService而后执行startService
onCreate->onBind->onCommend
3、关闭服务
如果是混合启动,那么必须都执行unbindService和stopService 而且最后执行的方法 执行完 才会调用onDestory方法
4、bindService方法 回调的Connection方法中onServiceDisconnected,是在意外断开的情况下 会回调,正常关闭的情况下不会调用
所以我们通过这个属性 可以做保活用 用来监听 你的进程是否被kill掉了
5、public int onStartCommand(Intent intent, int flags, int startId) 中的flags 有很大的学问
让后台保活的Service
这里面 介绍了关于flags的用处以及特点
1、START_STICKY
在运行onStartCommand后service进程被kill后,那将保留在开始状态,但是不保留那些传入的intent。不久后service就会再次尝试重新创建,因为保留在开始状态,在创建 service后将保证调用onstartCommand。如果没有传递任何开始命令给service,那将获取到null的intent。
2、START_NOT_STICKY
在运行onStartCommand后service进程被kill后,并且没有新的intent传递给它。Service将移出开始状态,并且直到新的明显的方法(startService)调用才重新创建。因为如果没有传递任何未决定的intent那么service是不会启动,也就是期间onstartCommand不会接收到任何null的intent。
3、START_REDELIVER_INTENT
在运行onStartCommand后service进程被kill后,系统将会再次启动service,并传入最后一个intent给onstartCommand。直到调用stopSelf(int)才停止传递intent。如果在被kill后还有未处理好的intent,那被kill后服务还是会自动启动。因此onstartCommand不会接收到任何null的intent。
源码地址
- android开发-Service的生命周期
- android开发 service生命周期
- Android Service的生命周期
- Android 的Service生命周期
- Android Service 的生命周期
- Android Service的生命周期
- Android的Service生命周期
- Android Service的生命周期
- Android Service的生命周期
- Android Service的生命周期
- Android Service的生命周期
- Android Service的生命周期
- Android-Service的生命周期
- Android Service的生命周期
- Android Service的生命周期
- Android Service 的生命周期
- Android Service的生命周期
- Android Service的生命周期
- nginx服务器隐藏版本号
- linux 编译 依赖静态库的静态库问题
- cassandra materialized view And index
- nginx开始
- Mian加载spring容器
- android开发-Service的生命周期
- 身份证工具类
- MapReduce中job参数及设置map和reduce的个数
- 农业农村经济发展势头向好 呈现“六个新”
- java中String、StringBuffer、StringBuilder的区别
- 理解Javascript_07_理解instanceof实现原理
- Java代码分别用递归和非递归方式计算二叉树的最大深度
- selenium之时间等待
- Python 包的理解