位置: 编程技术 - 正文

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

  • 小微企业城建税优惠政策2023
  • 单位外币账户领取流程
  • 普通发票的税费额度高吗
  • 发票红票和退票区别在哪
  • 业务招待费的扣除标准是什么2022
  • 企业固定资产入账金额标准
  • 库存商品毁损会导致什么
  • 股权投资和债权投资的风险
  • 收到假钱的会计分录
  • 年终红包怎么入账
  • 增值税专用发票的税率是多少啊
  • 员工因公负伤期间公司怎么开工资
  • 专票什么公司才能开
  • 子公司注销后人员怎么安置
  • 学校收取食堂管理费
  • 应收利息和应计利息有什么不同
  • 应收出租包装物的租金计入
  • 发票跨年了还能认证吗
  • win11升级卡66
  • php简单实例
  • php中如何获取数组的长度
  • 苹果发布macOS13.3预览版
  • image driver
  • print-js
  • top命令可以看到哪些信息
  • 劳务公司已开票,可款项未收到,税票多久有效
  • 经营性存款人违反规定
  • php 构造方法
  • 其他免税销售额>0时,免税性质代码不能为空是什么意思
  • lstm crf
  • js文件合并工具
  • 冲红发票操作流程
  • python mad
  • 发工资时代扣房贷怎么办
  • 预付款为什么不扣质保金呢
  • 银行承兑汇票回头背书
  • 房地产公司测绘费怎么做会计分录
  • SQL Sever2008r2 数据库服务各种无法启动问题的解决办法(详解)
  • 小规模纳税人能开3%的专票吗
  • 其它应付款的审计内容
  • 金税四期监控银行卡
  • 递延所得税资产和负债怎么计算
  • 建筑行业普票和专票的税率一样吗
  • 差额征税的账务处理教学视频
  • 发票上的折扣是什么意思
  • 冲销以前年度多提税金
  • 租的办公室装修费怎么处理
  • 流动性比率过小什么意思
  • 开发间接费用怎么计算
  • 应付账款会计分录例题
  • 认证的进项退税怎么操作
  • 销项税额是专票和普票之和
  • 应收的货款
  • sql server 获取今天的数据
  • sql语句删除语句
  • windowsserver2008r2standard激活
  • ie10工具栏在哪
  • linux命令放在哪个路径
  • 如何知道文件的解压密码
  • linux操作系统常用操作命令
  • centos最小化安装配置网络
  • mac使用命令行
  • mousemenu是什么文件夹
  • centos简介
  • python批量更改文件名称
  • perl-v
  • js原型继承和构造继承
  • Node.js与Sails redis组件的使用教程
  • python元数据
  • javascript的if
  • unity3d android 插件
  • javascript自定义函数
  • jq 鼠标事件
  • python安装第三方模块
  • 掌上海关怎么查询
  • 济宁税务局王燕利
  • 深圳地方税务局电话
  • 西安12345官网登录入口二维码
  • 河北国税网上办税云厅手机
  • 汽车销售环节要做什么
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设