位置: 编程技术 - 正文

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实战教程)

  • 一般纳税人机电安装服务费税率是多少
  • 公司卫生纸是自己带还是公司买
  • 小规模纳税人实收资本
  • 小规模纳税人未开票收入填在哪里
  • 应发工资和实发工资计算公式excel
  • 建筑企业预收款开票
  • 应交税费未交增值税借方余额表示什么
  • 会计中预付款包括
  • 现金比率一般多少
  • 付款时没有发票怎么做账
  • 税款不申报会怎样
  • 年终所得税汇算提示成本费用与实际取得发票有差异
  • 员工与单位解除劳动合同书范本
  • 税务申报没报上怎么办
  • 影视行业如何盈利
  • 电子汇票如何使用
  • 外汇收入会计分录
  • 高温津贴的发放
  • 公益性捐赠所得税处理
  • linux批量操作工具
  • 无法加载响应数据 对于预检请求没有可显示的内容
  • 境内单位和个人将船舶出租到境外的,不征收车船税
  • 票据权利消灭是啥意思
  • 个人所得税如何退税操作步骤
  • 异地工程预缴增值税怎么计算
  • 外地预交增值税退税了如何把申报报表
  • 电力安装工程辅料有哪些
  • sgmain.exe - sgmain是什么进程 有何作用
  • 明细分类帐户
  • 套期工具的会计分录
  • 服务行业的进项
  • ai绘图软件教程
  • 路由加载的几种方式
  • uni-app实例教程
  • php用户登录界面代码
  • 应交税款怎么计算
  • 首涂第二十一套模板
  • 借款合同 印花
  • vue导航方式
  • 年金终值系数是指已知( ),求终值
  • 利润总额包括的内容主要有
  • 职工辞退福利是否要申报个税
  • 补提去年累计折旧
  • 公户转私户的钱会退回吗
  • 收到工程款怎么记账
  • 12月多开的发票,可以明年1月份入账吗?
  • 工资计提数小于发放数,如何处理
  • 企业给职工发放的自产产品应作为职工福利费管理
  • 车辆租赁费发票怎么开
  • 软件公司购买软件用于研发
  • 内账税费计入什么科目
  • 滞留专票会有什么风险
  • 提高纳税遵从度依靠行政执法还是纳税服务
  • 固定资产多少金额必须招标
  • 更换账簿需要注意哪些问题
  • sql server常规错误
  • mysqldump导出csv文件
  • 怎么快速隐藏电脑下方一排
  • 微软宣布9月30日停止在俄罗斯服务
  • linux系统的组成及其作用
  • winmysqladmin.exe - winmysqladmin进程是什么意思
  • linux的文件和目录的区别
  • linux 使用技巧
  • linux系统fedora
  • Win7旗舰版系统镜像文件
  • jquery()
  • node.js创建服务
  • jquery mobile ui
  • jquery ajax后台返回list,前台用jquery遍历list的实现
  • jquery切换css样式
  • js基本代码
  • 最简单手电筒
  • 从重置手
  • 辽宁省国家税务局电话
  • 国家税务网上办税
  • 地税网上预约
  • 税务执法资格考试
  • 企业改制和重组的区别
  • 上海网上申报软件怎样下载
  • 一般纳税人企业所得税5%还是25%
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设