- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
/allin/archive/2010/05/15
/1736462.html /newcj/archive/2011/05/ 30/2061370.html
1、Service 的种类
类别区别
类别
区别
优点
缺点
应用
该服
服务依附在主进程上而不是独立的进程,
非常常见的应
务依
这样在一定程度上节约了资源,另外
主进程被
用如:HTC 的音
本地服务
附在
Local 服务因为是在同一进程因此不需要 Kill 后,服务 乐播放服务,天
(Local)
主进
IPC,也不需要 AIDL。相应 bindService 便会终止。
天动听音乐播放
程上, 会方便很多。
服务。
该服务是独
服务为独立的进程,对应进程名格式为所
该服 立的进程,会
在包名加上你指定的 android:process
一些提供系统
务是 占用一定资
远程服务 字符串。由于是独立的进程,因此在
独立 源,并且使用
(Remote)
Activity 所在进程被 Kill 的时候,该服务
服务的Service,
这种 Service 是
的进
依然在运行,不受其他进程影响,有利于
AIDL 进行
IPC 稍微麻烦
常驻的。
程,
为多个进程提供服务具有较高的灵活性。
一点。
其实 remote 服务还是很少见的,并且一般都是系统服务。
按运行类型分类:
类别 区别 应用
前台 会在通知一栏显示 ONGOING 的服务 Notification,
当服务被终止的时候,通知一栏的 Notification 也会消失,这样对于用户有一定的通知作用。常见 的如音乐播放服务。
默认的服务即为后台服务,即不会在通
默认的服务即为后台服务,即不会在通 当服务被终止的时候,用户是看不到效果的。某些
后台
服务
知一栏显示 ONGOING
的 Notification。
不需要运行或终止提示的服务,如天气更新,日期
同步,邮件同步等。
有同学可能会问,后台服务我们可以自己创建 ONGOING 的 Notification 这样就成为前台服务吗?答案是否定的,前台服务是在做了上述工作之后需要调用 startForeground ( android
2.0 及其以后版本 )或 setForeground (android 2.0 以前的版本)使服务成为 前台服务。
这样做的好处在于,当服务被外部强制终止掉的时候, ONGOING 的 Notification 任然会移除掉。
按使用方式分类:
类别
startService 启动的服务
区别
主要用于启动一个服务执行后台任务,不进行通信。停止 服务使用 stopService
bindService 启动的服务
startService 同时也 bindService
启动的服务
该方法启动的服务要进行通信。停止服务使用
unbindService
停止服务应同时使用 stepService 与 unbindService
以上面三种方式启动的服务其生命周期也有区别,将在随后给出。
2、Service 与 Thread 的区别
很多时候,你可能会问,为什么要用 Service,而不用 Thread 呢,因为用 Thread 是很方便的,比起 Service 也方便多了,下面我详细的来解释一下。
Thread:Thread 是程序执行的最小单元,它是分配 CPU 的基本单位。可以用 Thread 来执行一些异步的操作。
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 需要不停地隔一段时间就要连接服务器做某种同步的话,该
文档评论(0)