Android 10.1 创建Service课件课件.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
绑定Service 创建绑定服务 三种方法定义接口 使用 AIDL AIDL(Android 接口定义语言)执行所有将对象分解成原语的工作,操作系统可以识别这些原语并将它们编组到各进程中,以执行 IPC。采用 Messenger 的方法实际上是以 AIDL 作为其底层结构。如上所述,Messenger 会在单一线程中创建包含所有客户端请求的队列,以便服务一次接收一个请求。不过,如果想让服务同时处理多个请求,则可直接使用 AIDL。 在此情况下,服务必须具备多线程处理能力,并采用线程安全式设计。 如需直接使用 AIDL,必须创建一个定义编程接口的 .aidl 文件。Android SDK 工具利用该文件生成一个实现接口并处理 IPC 的抽象类,随后可在服务内对其进行扩展。 4 绑定Service 扩展 Binder 类 基本步骤 在服务中,创建一个可满足下列任一要求的 Binder 实例: 包含客户端可调用的公共方法 返回当前 Service 实例,其中包含客户端可调用的公共方法 或返回由服务承载的其他类的实例,其中包含客户端可调用的公共方法 从 onBind() 回调方法返回此 Binder 实例。 在客户端中,从 onServiceConnected() 回调方法接收 Binder,并使用提供的方法调用绑定服务。 4 绑定Service 扩展 Binder 类 示例:创建Service LocalBinder 为客户端提供 getService() 方法,以检索 LocalService 的当前实例。这样,客户端便可调用服务中的公共方法。 例如,客户端可调用服务中的 getRandomNumber()。 4 绑定Service 扩展 Binder 类 示例:绑定Service Activity 会绑定到 LocalService 并调用 getRandomNumber()。 4 绑定Service 使用 Messenger 基本步骤 服务实现一个 Handler,由其接收来自客户端的每个调用的回调 Handler 用于创建 Messenger 对象(对 Handler 的引用) Messenger 创建一个 IBinder,服务通过 onBind() 使其返回客户端 客户端使用 IBinder 将 Messenger(引用服务的 Handler)实例化,然后使用后者将 Message 对象发送给服务 服务在其 Handler 中(具体地讲,是在 handleMessage() 方法中)接收每个 Message 这样,客户端并没有调用服务的“方法”。而客户端传递的“消息”(Message 对象)是服务在其 Handler 中接收的。 4 绑定Service 使用 Messenger 示例:创建Service 服务就是在 Handler 的 handleMessage() 方法中接收传入的 Message,并根据 what 成员决定下一步操作。 4 绑定Service 使用 Messenger 示例:绑定Service 客户端只需根据服务返回的 IBinder 创建一个 Messenger,然后利用 send() 发送一条消息。 4 绑定Service 绑定到服务 调用 bindService() 绑定到服务。 绑定是异步的。要接收 IBinder,客户端必须创建一个 ServiceConnection 实例,并将其传递给 bindService()。ServiceConnection 包括一个回调方法,系统通过调用它来传递 IBinder。 无法从广播接收器绑定到服务。 4 绑定Service 绑定到服务 基本步骤 实现 ServiceConnection。 onServiceConnected()系统会调用该方法以传递服务的onBind() 方法返回的 IBinder。 onServiceDisconnected() 系统会在与服务的连接意外中断时(例如当服务崩溃或被终止时)调用该方法。当客户端取消绑定时,系统“绝对不会”调用该方法。 调用 bindService() 以传递 ServiceConnection 实现。 当系统调用onServiceConnected() 回调方法时,可以使用接口定义的方法开始调用服务。 要断开与服务的连接,调用 unbindService()。 4 绑定Service 绑定到服务 bindService():bindService(intent, mConnection, Context.BIND_AUTO_CREATE); 第一个参数是一个 Intent,用于显式命名要绑定的服务(但 Intent 可能是隐式的) 第二个参数是 ServiceConnection 对象 第三个参数是一个指示

文档评论(0)

弹弹 + 关注
实名认证
文档贡献者

人力资源管理师、教师资格证持证人

该用户很懒,什么也没介绍

版权声明书
用户编号:6152114224000010
领域认证该用户于2024年03月13日上传了人力资源管理师、教师资格证

1亿VIP精品文档

相关文档