- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
android服务的生命周期
作为一款多任务操作系统,如果不能运行后台服务,显然说不过去,Android 当然提供了运行后台程序的方法。而且非常简单易用,只不过有一些小问题需要注意,这个主题分为两部分,第一部分是如何实现一个Service以及他的生命周期,第二部分是对于一个个后台服务应该注意的事项。我们开始吧!
创建服务类
所谓的服务,在Android里被称做 Service,只要继承 android.app.Service 这个抽象类,并且实现其中几个方法就可以了。
view plaincopy to clipboardprint?
public class RoidingService extends android.app.Service {}
public class RoidingService extends android.app.Service {}
里边必须实现的一个方法是 onBind(Intent intent) ,他具体是做什么的我们下边讲。还有两个重要的回调函数需要覆盖,onCreate() 和 onDestroy()。跟 Actitivty 类似,在创建和销毁 Service 时回调这两个函数,达到初始化或退出前保存状态。
服务的生命周期
有了 Service 类我们如何启动他呢,有两种方法:
Context.startService()
Context.bindService()
在同一个应用任何地方调用 startService() 方法就能启动 Service 了,然后系统会回调 Service 类的 onCreate() 以及 onStart() 方法。这样启动的 Service 会一直运行在后台,直到 Context.stopService() 或者 selfStop() 方法被调用。另外如果一个 Service 已经被启动,其他代码再试图调用 startService() 方法,是不会执行 onCreate() 的,但会重新执行一次 onStart() 。
另外一种 bindService() 方法的意思是,把这个 Service 和调用 Service 的客户类绑起来,如果调用这个客户类被销毁,Service 也会被销毁。用这个方法的一个好处是,bindService() 方法执行后 Service 会回调上边提到的 onBind() 方发,你可以从这里返回一个实现了 IBind 接口的类,在客户端操作这个类就能和这个服务通信了,比如得到 Service 运行的状态或其他操作。如果 Service 还没有运行,使用这个方法启动 Service 就会 onCreate() 方法而不会调用 onStart()。
接着前一部分,我们来讨论一下在具体使用服务时候会碰上一些问题,以及探讨一下解决的办法。
与 Service 通信并且让它持续运行
如果我们想保持和 Service 的通信,又不想让 Service 随着 Activity 退出而退出呢?你??以先 startService()然后再 bindService() 。当你不需要绑定的时候就执行 unbindService() 方法,执行这个方法只会触发 Service 的 onUnbind() 而不会把这个 Service 销毁。这样就可以既保持和 Service 的通信,也不会随着 Activity 销毁而销毁了。
提高 Service 优先级
Android 系统对于内存管理有自己的一套方法,为了保障系统有序稳定的运信,系统内部会自动分配,控制程序的内存使用。当系统觉得当前的资源非常有限的时候,为了保证一些优先级高的程序能运行,就会杀掉一些他认为不重要的程序或者服务来释放内存。这样就能保证真正对用户有用的程序仍然再运行。如果你的 Service 碰上了这种情况,多半会先被杀掉。但如果你增加 Service 的优先级就能让他多留一会,我们可以用 setForeground(true) 来设置 Service 的优先级。
为什么是 foreground ? 默认启动的 Service 是被标记为 background,当前运行的 Activity 一般被标记为 foreground,也就是说你给 Service 设置了 foreground 那么他就和正在运行的 Activity 类似优先级得到了一定的提高。当让这并不能保证你得 Service 永远不被杀掉,只是提高了他的优先级。
有一个方法可以给你更清晰的演示,进入 $SDK/tools 运行命令
view plaincopy to clipboardprint?
# adb shell dumpsys activity|gr
您可能关注的文档
- 学生成绩通知单和告家长一封信.doc
- 第四节物质的量.ppt
- 翻译的过程和原则.ppt
- 《电子商务模拟》实训指导书.doc
- 09年12月日语一级真题原文文字词汇部分.doc
- 电梯配套协议1.doc
- 五金检验规范.doc
- SG-A079电线导管、电缆导管和线槽敷设安装工程检验批质量验收记录.doc
- 博达试题模版.doc
- 2011暑假九年级数学竞赛班入学测试卷(胡).doc
- 2026年海南省交通规划勘察设计研究院招聘备考题库参考答案详解.docx
- 2026年招商局通商融资租赁有限公司招聘备考题库及完整答案详解1套.docx
- 2026年昆明煤炭设计研究院有限公司招聘备考题库及答案详解参考.docx
- 2026年武义县大田乡人民政府招聘备考题库及一套答案详解.docx
- 2026年度周口市市直机关公开遴选公务员备考题库及答案详解参考.docx
- 2026年河北天和咨询有限公司招聘备考题库及答案详解一套.docx
- 2026年济南市历城区教育和体育局所属事业单位第一批公开招聘教师备考题库及答案详解1套.docx
- 2026年招聘备考题库平顶山工业职业技术学院专职辅导员岗位招聘备考题库带答案详解.docx
- 2026年江门市中医科学院科研助理招聘备考题库及参考答案详解1套.docx
- 2026年桃源县公安局警务辅助人员公开招聘备考题库带答案详解.docx
最近下载
- 工业机器人系统操作员(中级工)理论考核试卷及答案(六).docx VIP
- 专注的惊人力量.pptx VIP
- 陕西省西安市西咸新区2024-2025学年六年级上学期期末英语试题.docx VIP
- 国有企业人力资源工作流程图(收藏了).doc VIP
- MT∕T 244.1-2020 煤矿窄轨车辆连接件 连接链.pdf
- 加油站税控初始化管理系统V12.pdf VIP
- 房建施工工序定额及施工工效大全.pdf VIP
- 《天津市建设项目配建停车场(库)标准》DB29-6-2004详解.docx
- 《分析化学》全套课件完整版)ppt.pptx VIP
- 专题06 《昆虫记》中考考试题及典型习题训练 (含答案析)-中考语文常考名著之阅读指导及考试题训练.docx VIP
原创力文档


文档评论(0)