位置: 编程技术 - 正文

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

  • 应收账款余额不对怎么调账
  • 所得税本期需要结转吗
  • 增值税发票注明金额是含税还是不含税
  • 投入实收资本需要缴纳什么税
  • 递延所得税资产计算公式
  • 增值税税金不足1元未缴纳账务处理
  • 产成品出库入库单
  • 成本法长期股权投资账务处理
  • 银行借款的利息支出属于什么会计要素
  • 民间非营利组织会计制度
  • 房屋租赁发票在哪开
  • 代扣代缴的增值税
  • 该期已经申报此税种且数据已提交,不能预约扣款
  • 财务软件利润表没显示
  • 对外投资的风险及对策
  • 跨年度多计提的社保调整
  • 个人转让公司限售股纳税地点要求
  • deepin如何
  • 在线网速测试网站测速工具
  • 支付中间业务收入怎么算
  • 转出未交增值税借方余额表示什么
  • 修改linux启动项
  • 负债期末余额为负数写在哪方
  • 微信小程序隐藏航班
  • 餐饮企业库存盘点表
  • 土地增值税的计算方法和步骤例题
  • 汉字转拚音
  • 损益类科目借贷方向是什么
  • 金税盘如何使用流程
  • php模拟post提交
  • php自定义变量的方法是
  • 会计等式反映了六大会计要素的恒等关系
  • ps制作折扇效果图
  • 工业企业采购部工资计入什么科目
  • 银行存款手工明细分类账
  • 不同会计制度资产负债表金额不一样
  • 什么是服务型
  • 进项税额转出忘记申报咋办
  • 开票服务名称可以自己添加吗
  • 养老院筹开计划
  • 全员啥意思
  • 股权转让溢价款缴纳增值税
  • sqlserver2012开发版
  • 公司有残疾人如何申报残保金
  • 所得税申报表里季初资产是指什么
  • 税控盘买了怎么用
  • 利息收入应该怎么记账
  • 无法收回的款项
  • 防伪税控服务费计入什么科目
  • 小规模发票跨月冲红怎么纳税申报
  • 银行支付结算管理办法
  • 账户外币转人民币
  • 工资里计提五险什么意思
  • 出口退税转为免税处理有损失吗
  • 企业获得小微企业补贴
  • 公司员工还款会计分录
  • ubuntu server gui
  • 品牌笔记本电脑排行
  • win7 64位系统如何查看计算机名称为了应付某一操作
  • xp系统如何清理缓存
  • linux ipi
  • 优盘和硬盘
  • win10系统下怎么安装caxa2016电子图板 caxa2016电子图板安装详细图文教程
  • 在linux操作系统中,/etc/rc.d/init.d
  • font:inherit
  • [置顶]bilinovel
  • python编程字符串中删除数字
  • 使用Math.floor与Math.random取随机整数的方法详解
  • 用python做
  • 如何理解js的面向对象
  • jquery动态改变样式
  • Android调用系统截屏方法
  • jquery ajax结合thinkphp的getjson实现跨域的方法
  • 税控盘税务数字书驱动找不到应用程序是咋回事
  • 研发材料占研发费用比例超出50%
  • 深圳国税局官网登录
  • 所得税 营业税计算公式
  • 房地产的土地增值税计入哪个科目
  • 南京税务局举报
  • 吉林省税务局发票流向查询系统
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设