- 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 中的 Service 全面总结
1、Service的种类
按运行地点分类:
类别
区别
优点
缺点
应用
本地服务(Local)
该服务依附在主进程上,
服务依附在主进程上而不是独立的进程,这样在一定程度上节约了资源,另外Local服务因为是在同一进程因此不需要IPC,也不需要AIDL。相应bindService会方便很多。
主进程被Kill后,服务便会终止。
非常常见的应用如:HTC的音乐播放服务,天天动听音乐播放服务。
远程服务(Remote)
该服务是独立的进程,
服务为独立的进程,对应进程名格式为所在包名加上你指定的android:process字符串。由于是独立的进程,因此在Activity所在进程被Kill的时候,该服务依然在运行,不受其他进程影响,有利于为多个进程提供服务具有较高的灵活性。
该服务是独立的进程,会占用一定资源,并且使用AIDL进行IPC稍微麻烦一点。
一些提供系统服务的Service,这种Service是常驻的。
其实remote服务还是很少见的,并且一般都是系统服务。
按运行类型分类:
类别
区别
应用
前台服务
会在通知一栏显示 ONGOING 的 Notification,
当服务被终止的时候,通知一栏的 Notification 也会消失,这样对于用户有一定的通知作用。常见的如音乐播放服务。
后台服务
默认的服务即为后台服务,即不会在通知一栏显示 ONGOING 的 Notification。
当服务被终止的时候,用户是看不到效果的。某些不需要运行或终止提示的服务,如天气更新,日期同步,邮件同步等。
有同学可能会问,后台服务我们可以自己创建 ONGOING 的 Notification 这样就成为前台服务吗?答案是否定的,前台服务是在做了上述工作之后需要调用 startForeground ( android 2.0 及其以后版本 )或 setForeground (android 2.0 以前的版本)使服务成为 前台服务。这样做的好处在于,当服务被外部强制终止掉的时候,ONGOING 的 Notification 任然会移除掉。
按使用方式分类:
类别
区别
startService 启动的服务
主要用于启动一个服务执行后台任务,不进行通信。停止服务使用stopService
bindService 启动的服务
该方法启动的服务要进行通信。停止服务使用unbindService
startService 同时也 bindService 启动的服务
停止服务应同时使用stepService与unbindService
以上面三种方式启动的服务其生命周期也有区别,将在随后给出。
2、Service 与 Thread 的区别
很多时候,你可能会问,为什么要用 Service,而不用 Thread 呢,因为用 Thread 是很方便的,比起 Service 也方便多了,下面我详细的来解释一下。
1). Thread:Thread 是程序执行的最小单元,它是分配CPU的基本单位。可以用 Thread 来执行一些异步的操作。
2). Service:Service 是android的一种机制,当它运行的时候如果是Local Service,那么对应的 Service 是运行在主进程的 main 线程上的。如:onCreate,onStart 这些函数在被系统调用的时候都是在主进程的 main 线程上运行的。如果是Remote Service,那么对应的 Service 则是运行在独立进程的 main 线程上。因此请不要把 Service 理解成线程,它跟线程半毛钱的关系都没有!
既然这样,那么我们为什么要用 Service 呢?其实这跟 android 的系统机制有关,我们先拿 Thread 来说。Thread 的运行是独立于 Activity 的,也就是说当一个 Activity 被 finish 之后,如果你没有主动停止 Thread 或者 Thread 里的 run 方法没有执行完毕的话,Thread 也会一直执行。因此这里会出现一个问题:当 Activity 被 finish 之后,你不再持有该 Thread 的引用。另一方面,你没有办法在不同的 Activity 中对同一 Thread 进行控制。
举个例子:如果你的 Thread 需要不停地隔一段时间就要连接服务器做某种同步的话,该 Thread 需要在 Activity 没有start的时候也在运行。这个时候当你 start 一个 Activity 就没有办法在该 Activity 里面控制之前创建的 Thread。因此你便需要创建并启动一个 Service ,在 Service 里面创建、运行并控制该 Thread,
您可能关注的文档
- AMATJAN(毕业论文)【DOC精选】.doc
- amplication【DOC精选】.doc
- AMT翻译作业【DOC精选】.doc
- An Adaptive Channel Estimation Technique in MIMO OFDM Systems【DOC精选】.doc
- Amorphous Cell【DOC精选】.doc
- An Example of Language Variation o【DOC精选】.doc
- An Eye To Iran【DOC精选】.doc
- Analysing the changes of amino acid usage frequencies during viridiplantae evolution【DOC精选】.doc
- ANCIENT CIVILIZATIONS【DOC精选】.doc
- AD_Design_Proposal_Template【DOC精选】.doc
- Android 适应任何自定义样式 提示弹出框 Dialog 封装【DOC精选】.doc
- android 画虚线、实线,画圆角矩形,一半圆角【DOC精选】.doc
- Android-ExpandableListView【DOC精选】.doc
- Android_UI开发专题【DOC精选】.doc
- android各种弹出对话框【DOC精选】.doc
- Android官方导航栏ActionBar(二)(烟台杰瑞教育Android培训部原创)【DOC精选】.docx
- Android使用SDCard【DOC精选】.doc
- Android实现仿QQ登录可编辑下拉框【DOC精选】.doc
- Android实现记住密码和自动登录功能【DOC精选】.doc
- android客户端通过Get方式提交参数给服务器【DOC精选】.doc
文档评论(0)