- 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
所谓的service有Local Service和Remote Service区分:
LocalService:就是client和Service在同一个进程当中。
RemoteService:就是client 和Service在不同的进程中。
我们通常的用法是自己建一个.java文件中通过继承Service来实现一个子Service。然后在通过其他的Activity来连接实现的那个Service就有点像网络编程中的链接服务器一样。但是这里的Service不是独立的一个服务器端,它可以说是手机app的一个实现模块。所以不是像传统的网络编程一样,首先启动服务器,然后在从client去访问。android中的Service要通过访问端通过传递消息(Intent)去开启Service。通常有两种方法去启动一个Service。
一)context.startService()启动方式
public abstract ComponentName startService(Intent service)
通过函数的原型我们可以看出是一个Component去调用的,参数就是一个Intent,在该Intent中去指定一些规则和消息来启动符合条件的Service。
The Intent can either contain the complete class name of a specific service implementation to start, or an abstract definition through the action and other fields of the kind of service to start(by gg doc).
此时我们明确了client端发出去Intent去启动Service的过程,但是Service端是怎么来响应的?然后怎么启动你实现的子Service的呢?
Every call to this method(startService(Intent intent)) will result in a corresponding call to the target services
onStartCommand(Intent, int, int)(by gg doc)就是each component调用startService(Intent intent)来启动Service的时候,service端作出的响应就是call onStartCommand(Intent,int,int)函数
public int onStartCommand (Intent intent, int flags, int startId)
当调用该函数的时候intent对象就是startService(Intent intent)红传递过来的intent对象。flags:start request的额外请求,可以是:0, START_FLAG_REDELIVERY,START_FLAG_RETRY.
startId:an unique integer 来展示这次请求
目前gg doc给出了四种返回值类型。
START_STICKY:如果service进程被kill掉,保留service的状态为开始状态,但不保留递送的intent对象。随后系统会尝试重新创建service,由于服务状态为开始状态,所以创建服务后一定会调用onStartCommand(Intent,int,int)方法。如果在此期间没有任何启动命令被传递到service,那么参数Intent将为null。
START_NOT_STICKY:返回该返回值时,如果在执行完onStartCommand后,Service被一场kill掉后,系统不会重启该Service。
START_REDELIVER_INTENT:但返回这个返回值的时候,从startService传过来的intent对象将保存它的数据,当Service被异常kill掉的后,Service会重启,然后再将Intent传入。
START_STICKY_COMPATIBILITY:START_STICKY的兼容版本,但不保证服务被kill后一定能重启
这个函数不能人为的去直接调用,而是由Android system在Service的main thread中有系统去调用。
所以一般情况下继承Service的子类都要重写Service类的:OnCreate(),onStartCommand(),onBinder(),onStart(),onDestory(),onRebind(),onUnbind()方法,然后在编写其他自己要是想的功能实现函数。
所以
您可能关注的文档
- american works【DOC精选】.doc
- AMERICAN MOSAIC - Population Growth of the United States Leads Industrial Nations【DOC精选】.doc
- american english & british english【DOC精选】.doc
- AmevgbaSAT数学词汇【DOC精选】.doc
- Altera project实验报告【DOC精选】.doc
- AMATJAN(毕业论文)【DOC精选】.doc
- amplication【DOC精选】.doc
- AMT翻译作业【DOC精选】.doc
- An Adaptive Channel Estimation Technique in MIMO OFDM Systems【DOC精选】.doc
- Amorphous Cell【DOC精选】.doc
- android shape的使用【DOC精选】.doc
- android service【DOC精选】.docx
- Android 中的 Service 全面总结【DOC精选】.docx
- 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
文档评论(0)