位置: 编程技术 - 正文

Android Bound Service(二) ----- Using AIDL

编辑:rootadmin

推荐整理分享Android Bound Service(二) ----- Using AIDL,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

refs: Interface Definition Language)就像其它接口定义语言一样。它使你可以定义服务端及客户端程序的接口,以达到跨进程沟通( IPC )的目的。

注意:

1。在多进程多线程的情况下,我们才使用 AIDL

2。单一进程时,使用实现 Binder 类的方式定义接口

3。如果只有跨进程,但不需処理多线程的情况,请使用 Messenger

一、创造一个 AIDL 档案

AIDL 支持以下数据类型做为接口方法的参数与回传类型:

1. 所有 primitive data type

2. String

3. CharSequence

4. List

5. Map

Android Bound Service(二) ----- Using AIDL

将 aidl 档存放於 /src 下,在编译过程,其会自动生成一个 .java 档,包括了一个名为 Stub 的子类,其为一个 aidl接口类的 abstract implmentation,并且有著所有 aidl 接口类的所有宣告方法如下,这些我们在後面会一一讲解,使我们具有自己实现,而不依赖 aidl 的能力,如下:

Stub 也定义了一些辅助方法,该特别注意的是 asInterface(),其拿一个IBinder 作为参数(通常是传进客户端的 onServiceConnected()的回调方法)并返回一个 stub 接口对象。

二、实现接口

我们需要实现 aidl 产生的接口,范例如下:

现在 mBinder 是一个 Stub 类的实例,并且实现了接口。下一步,这个实例将暴露给客户端,以使他们能够和 Service 互动。在实现 aidl 接口的时候,我们需要注意以下几点:

1. 因为命令不见得是在主线程上执行,所以必须考量多线程的情况,该 Service 得是线程安全。

2. RPC命令一般缺省的情况是同步的。如果 Service 会花一些时间処理一个 request 的话,便不应从主线程呼叫,否则会产生 ANR。

3. 没有任何的异常会回传给呼叫方 (caller)

三、暴露接口给给客户端使用

当客户端呼叫 bindService() 以建立连结时,onServiceConntected回调会接收到 Service onBind()所返回的 mBinder 实例。如果客端是在不同的应用,则客户端也要有一份 aidl 档案在 src/ 路径里。当客户端在 onServiceConnected()回调接收到 IBinder後,我们必须调用 AIDL接口类.Stub.asInterface(service),并将其返回&#;强转为我们的 AIDL接口类名,如下:

然後就可以从客户端呼叫服务端的 Service 了

完整例子:

Android实战--小DEMO(JAVA关键字学习之语音合成TTS的实现)一 接着上一节讨论的问题,本DEMO中会用到TTS语音合成,我们下面介绍一个同样原理的小例子看一下布局文件很简单:?xmlversion=1.0encoding=utf-8?LinearLayoutxmlns:a

Android RxJava使用介绍(一) Hello World 最近在做东西的时候,一直在使用RxJava框架,越是深入了解RxJava,就越觉得这个框架威力实在是太大了。好东西不能一个人独自享受,后面几篇文章我

android开发中防止刚进入activity时edittext获取焦点,自动弹出软键盘 刚进入activity的时候,如果布局组件有edittext的话,往往edittext会获取焦点,自动弹出软键盘,影响整个界面的视觉效果。解决方法如下:可以在edittext的

标签: Android Bound Service(二) ----- Using AIDL

本文链接地址:https://www.jiuchutong.com/biancheng/374490.html 转载请保留说明!

上一篇:实现XMl文件的序列化与解析(xml文件示例)

下一篇:Android实战--小DEMO(JAVA关键字学习之语音合成TTS的实现)一(android实战教程)

  • 所得税汇算清缴时间期限
  • 基本户注销后还可以再开吗
  • 企业股东分红所得税税率表
  • 金税三期会查之前的票吗
  • 转移性支付收入是什么
  • 待抵扣进项税额冲回
  • 雇主责任险保费计算公式
  • 公司从银行贷款需要交税吗
  • 公司汽车装潢和保养做什么会计科目
  • 销售旧货时的售后是什么
  • 多交税费退税会计处理
  • 建筑公司挂靠项目账务怎么做?
  • 贷款利息税前扣除比例
  • 股东投入固定资产进来怎么做账
  • 建筑挂靠管理费用如何账务处理?
  • 本期就地缴纳的税额跟本期已缴税额
  • 汇算清缴中的科目怎么填
  • 华为分享的文件在电脑哪个文件夹
  • 笔记本最新windows
  • 苹果手机id被锁定什么意思
  • 个人劳务费几个点
  • 如何永久关闭win10系统更新
  • 工作组只能看到自己
  • 损益类科目包括费用类科目吗
  • 投影仪哪种光源亮度高
  • 出纳岗位的职责是什么
  • php dicom
  • PHP:imagecreatefromxpm()的用法_GD库图像处理函数
  • 工业企业制造费用包括哪些
  • 编写jsp程序,实现简易计算机
  • node教程
  • python中有很多包管理工具
  • 定额发票和增值税发票
  • 合同印花税可以年底报一次
  • 全年一次性奖金单独计税还是并入
  • 进项税额年末账务处理
  • php 错误提示
  • 筹办期发生业务怎么办
  • 两个mysql冲突怎么办
  • Python psd-tools如何转换文件
  • 如何查询发票领购日期
  • 折旧汇总分配周期参数设定完成可以更改吗
  • 减免申报明细表怎么填
  • SQL Sever 2005 Express 安装失败解决办法
  • 增值税纳税申报实训报告
  • 当月进项发票忘认证又开了销项税额怎么办
  • 入职体检费用报销发票怎么开
  • 重复报销怎么写情况说明
  • 用人单位延迟给员工交社保怎么办
  • 房产税应纳税额计算例题
  • 事业单位结余是什么意思
  • 开专票需要什么条件呢怎么开
  • 公司中标
  • 分支机构可不可以不建账合并到总机构?
  • 没有进货发票可以开票吗?
  • 资本成本率是指企业用资费用与有效筹资额之间的比率
  • 公司补缴社保怎么查不到
  • 好用的sql工具
  • w10桌面
  • UBUNTU怎么安装MPEG-4解码器
  • macOS 10.12.2下PDF崩溃严重怎么回事 macOS 10.12.2下PDF崩溃的原因以及解决办法
  • debian安装zsh
  • win10蓝屏stopcode
  • 重装系统的简写
  • 虚拟光驱安装
  • win10拦截在哪里关
  • 怎么查显卡信息
  • 计算机的硬盘
  • dosbox批处理
  • cocos creator 动画制作
  • Basic Layout——基本布局
  • jquery 异步请求
  • python与c
  • w10cmd命令高级命令
  • android中的webview
  • javascript cookbook
  • android synchronized
  • Python对象转列表
  • 哈尔滨工业大学录取分数线2023年
  • 经营所得专项扣除养老保险费可以全额扣除吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设