- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Android之Service的细枝末节剖析
Android之Service的细枝末节
进程
Service是一种不提供用户交互页面但是可以在后台长时间运行的组件,可以通过在AndroidManifest.xml设置Service的android:process=:remote属性,让Service运行另一个进程中,也就是说,虽然你是在当前应用启动的这个Service,但是这个Service和这个应用并不是同一个进程。
四大组件都支持android:process=:remote这个属性。
因为Service可以运行在不同的进程,这里说一下Android中几种进程的优先级,当系统内存不足时候,系统会从优先级低的进程开始回收,下面根据优先级由高到低列出Android中几种进程。
前台进程,当前用户操作所需要的进程
用户正在交互的Activity(Activity执行了onResume方法)
与正在交互的Activity绑定的Service
设置为前台权限的Service(Service调用startForeground()方法)
正在执行某些生命周期回调的Service,onCreate()、onStart()、onDestroy()
正在执行onReceive()的BroadcastReceiver
这种进程基本不会被回收,只有当内存不足以支持前台进程同时运行时候,系统才回回收它们,主要关注前三个。
可见进程,没有与用户交互所必须的组件,但是在屏幕上仍然可见其内容的进程
调用了onPause()方法但仍对用户可见的Activity
与上面这种Activity绑定的Service
服务进程,使用startService()启动的Service且不属于上面两种类别进程的进程,虽然这个进程与用户交互没有直接关系,但是一般会在后台执行一些耗时操作,所以,只有当内存不足以维持所有前台进程和可见进程同时运行,系统才回回收这个类别的进程。
后台进程,对用户不可见的Activity进程,已调用了onStop()方法的Activity
空进程,不包含任何活动应用组件的进程,保留这种进程唯一目的是作为缓存,缩短引用组件下次启动时间。通常系统会最优先回收这类进程。
此外,一个进程的级别可能会因为其他进程对它的依赖而有所提高,即进程A服务于进程B(B依赖A),那么A的进程级别至少是和B一样高的。
3. Service配置
和其他组件(Activity/ContentProvider/BroadcastReceiver)一样,Service需要在Androidmanifest.xml中声明。
manifest ...
...
application ...
service android:name=.DemoService /
...
/application
/manifest
Service是运行在主线程中的,如果有什么耗时的操作,建议新建子线程去处理,避免阻塞主线程,降低ANR的风险。
在另外一篇文章中Intent以及IntentFilter详解提到过,为了确保应用的安全,不要为Service设置intent-filter,因为如果使用隐式Intent去启动Service时候,手机里面那么多应用,并不能确定哪一个Service响应了这个Intent,所以在项目中尽量使用显式Intent去启动Service。在Android 5.0(API LEVEL 21)版本后的,如果传入隐式Intent去调用bindService()方法,系统会抛出异常。
可以通过设置android:exported=false来确保这个Service仅能在本应用中使用。
4. 服务启动方式
服务可以由其他组件启动,而且如果用户切换到其他应用,这个服务可能会继续在后台执行。到目前为止,Android中Service总共有三种启动方式。
Scheduled,可定时执行的Service,是Android 5.0(API LEVEL 21)版本中新添加的一个Service,名为JobService,继承Service类,使用JobScheduler类调度它并且设置JobService运行的一些配置。具体文档可以参考JobScheduler,如果你的应用最低支持版本是21,官方建议使用JobService。
Started,通过startService()启动的Service。通过这种方式启动的Service会独立的运行在后台,即使启动它的组件已经销毁了。例如Activity A使用startService()启动了Service B,过了会儿,Activity A执行onDestroy()被销毁了,如果Service B任务没有执行完毕,它仍然会在后台执行。
您可能关注的文档
- 矿业环境工程九课件.ppt
- 矿业英语b课件.doc
- AI印前输出pspdf设置图解剖析.doc
- 矿业环境工程四课件.ppt
- 矿业项目及其评价课件.pptx
- 矿业工程管理与实务(一级)-案例分析习题课件.ppt
- 矿井“一通三防”安全基本知识课件.ppt
- 矿业环境工程十课件.ppt
- 矿井供电保护接地课件课件.ppt
- 石灰窑马凳施工方案课件.doc
- 9 《文化遗产地旅游开发中的文化保护与传承旅游文化遗产保护与旅游服务提升关系研究》教学研究课题报告.docx
- 《特殊教育学校自闭症儿童音乐治疗干预的本土化策略与效果评估》教学研究课题报告.docx
- 职业教育体系中劳动教育内容的整合模式.docx
- 以问题为导向的初中生物实验设计能力培养实践研究教学研究课题报告.docx
- 基于大数据分析的教师教学发展性评价体系构建与实施策略研究教学研究课题报告.docx
- 校园艺术活动对小学生团队协作能力培养的实证分析教学研究课题报告.docx
- 药品质量追溯体系中区块链的智能合约应用.docx
- 校园绿化植物养护对小学生环境责任感培养的研究教学研究课题报告.docx
- 4 《传统戏曲传承中的非物质文化遗产保护与传承创新研究》教学研究课题报告.docx
- 《绿色金融业务绩效评价指标体系在绿色金融产品推广中的实证分析》教学研究课题报告.docx
最近下载
- 冠心病合并房颤的抗凝抗栓策略.ppt VIP
- 副高中医护理试题及答案.docx
- 员工职业发展通道设计课程.ppt VIP
- 注册安全工程师中级其他安全生产专业实务(电气安全)模拟试卷3.pdf VIP
- VDI2230高强度螺栓连接的系统计算中文版.pdf VIP
- 汉威KB500可燃气体报警控制器使用说明书.pdf
- 2024-2030全球摩托车和机车头盔行业调研及趋势分析报告.docx
- 2024-2030全球全面式蓝牙摩托车头盔行业调研及趋势分析报告.docx
- 神木市东安煤业有限公司煤炭资源整合项目(0.60Mt_a)(重大变动)环境影响报告书.pdf VIP
- (高清版)DB11∕T 1702-2019 生活饮用水样品采集技术规范.pdf VIP
文档评论(0)