Android Service详解:START_STICKY, START_NOT_STICKY, START_REDELIVE...
需积分: 0 72 浏览量
更新于2024-08-13
收藏 312KB PPT 举报
"Android开发从零开始,讲解了Service的学习,包括Service的基本概念、使用方式以及三个常量的含义。"
在Android应用开发中,Service是一种重要的组件,它能够在后台长时间运行,执行一些不需要用户界面的任务。Service可以分为两类:启动型(Started Services)和绑定型(Bound Services)。
1. 启动型Service:
当我们使用`startService()`方法启动一个Service时,即使启动它的Activity或应用退出,Service仍然会继续运行,直到`stopService()`或`stopSelf()`被调用。Service生命周期中的关键回调方法包括`onCreate()`(首次创建时调用)、`onStartCommand()`(每次`startService()`时调用)和`onDestroy()`(服务销毁时调用)。这里提到了三个常量,用于描述`onStartCommand()`返回值,它们决定了Service被系统杀死后的行为:
- `START_STICKY`:如果Service被系统因资源不足而杀死,系统会在内存条件允许时重新启动Service,但不会保留上次启动时的Intent对象。这意味着Service将从头开始执行,不恢复之前的Intent。
- `START_NOT_STICKY`:同样,如果Service被杀死,系统不会自动重启Service,除非再次调用`startService(Intent)`。这种情况下,Service只有在有新的Intent传递时才会被重新创建。
- `START_REDELIVER_INTENT`:当Service被杀死时,系统会等待一段时间,然后重新创建Service,并重新传递最后一次的Intent对象,这样Service可以继续未完成的工作。
2. 绑定型Service:
使用`bindService()`方法与Service建立连接,这种方式的服务与启动它的组件(如Activity)紧密关联。当所有与Service绑定的组件都解除绑定后,Service会被自动销毁。绑定型Service适用于需要频繁交互的情况,如实现进程间通信(IPC)。
Bound Services提供了一个接口,允许其他组件通过`IBinder`接口与其进行通信。`onBind()`方法返回这个接口,允许客户端发送请求,而`onUnbind()`则在最后一个客户端解绑时调用。由于绑定型Service仅在有绑定组件存在时运行,因此它更适合执行短暂、交互式的任务。
Service是Android应用中不可或缺的一部分,它们可以处理后台任务,保持应用在用户不直接交互时依然能运行。理解并熟练运用Service的启动和绑定方式,以及它们在被系统杀死后的恢复策略,对于开发高效、稳定的Android应用至关重要。
2021-09-26 上传
2021-09-29 上传
2021-08-05 上传
2023-06-10 上传
2023-07-29 上传
2023-09-21 上传
2023-05-19 上传
2024-09-16 上传
2023-07-28 上传
四方怪
- 粉丝: 28
- 资源: 2万+
最新资源
- ES管理利器:ES Head工具详解
- Layui前端UI框架压缩包:轻量级的Web界面构建利器
- WPF 字体布局问题解决方法与应用案例
- 响应式网页布局教程:CSS实现全平台适配
- Windows平台Elasticsearch 8.10.2版发布
- ICEY开源小程序:定时显示极限值提醒
- MATLAB条形图绘制指南:从入门到进阶技巧全解析
- WPF实现任务管理器进程分组逻辑教程解析
- C#编程实现显卡硬件信息的获取方法
- 前端世界核心-HTML+CSS+JS团队服务网页模板开发
- 精选SQL面试题大汇总
- Nacos Server 1.2.1在Linux系统的安装包介绍
- 易语言MySQL支持库3.0#0版全新升级与使用指南
- 快乐足球响应式网页模板:前端开发全技能秘籍
- OpenEuler4.19内核发布:国产操作系统的里程碑
- Boyue Zheng的LeetCode Python解答集