位置: 编程技术 - 正文

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

  • 本期应补退税额和期末未缴税额
  • 买房缴纳契税需要交税吗
  • 没有签订劳动合同可以直接离职吗
  • 缴纳房产税怎么记账
  • 公司税后利润怎么算
  • 二手车没有发票能过户吗
  • 已暂估入库原材料,确认收不到发票怎么调账
  • 统一企业员工
  • 市内打车费计入差旅费吗
  • 企业购买土地如何做账
  • 企业员工的高铁票进项税如何申报
  • 保险公司代收车船税在发票备注栏
  • 同一控制下企业合并报表编制
  • 货币资金项目应根据账户的期末余额合计填列
  • 一般纳税人税种认定有几个增值税要怎么申报呀
  • 公司举办的活动
  • 高新技术产品收入增长率公式
  • 社保逾期滞纳金可以免除吗?
  • 领导报销发票挂哪个科目
  • 报销个人费用如何定性
  • 收到去年所得税汇算清缴退税账务处理
  • 购买脚手架报价单
  • 电力公司安装变压器要多少钱
  • 报废 库存商品
  • 所得税弥补以前年度
  • 固定资产丢失收据怎么写
  • 应征增值税销售额和应税销售额
  • 原材料增值税怎么算
  • 工程施工成本发票未到会计分录及账务处理
  • 长租押金多少合适
  • 委托贷款是流动资金贷款吗
  • Win10 20H2 KB5001391补丁包更新内容汇总
  • 票据质押出票如何操作
  • 机票增值税怎么计算
  • php 如何下载
  • php5.4+mysql
  • 耕地占用税的具体内容
  • 由于找不到msvcr120.dll,无法继续执行代码什么意思
  • php数组函数,选班长
  • 负数发票怎么做账务处理
  • 机器学习篇-指标:AUC
  • 企业所得税中工资总额
  • 建筑材料开票可以抵税吗
  • php文件缓存类
  • sql自增1
  • 公司有收入可以做零申报吗
  • 使用sql server查询不到会返回什么
  • PostgreSQL教程(十一):服务器配置
  • 政府补助分类有几种
  • 贷款调查的主要内容
  • 应纳税额和已缴税额一样
  • 金税盘是怎样的
  • 工程设计费收入在所得税申报表应填入
  • 居间费用超过30%违法吗
  • 材料暂估分录
  • 公司研发项目立项
  • 账簿设置方法
  • Linux/Mac MySQL忘记密码怎么办
  • linux lftp命令
  • window xp电脑连接宽带怎么连接
  • WIN10怎么设置在平板模式下隐
  • fdb是什么文件
  • Ghost XP SP3 YN8.0装机版 (雨林木风)
  • windows7旗舰版怎么打字
  • linux tcptraceroute
  • windows10储存
  • 阴影效果有什么用
  • 使用JQuery实现Ctrl+Enter提交表单的方法
  • 安装centos no such device
  • activity lunchmode详解
  • 调出下拉菜单
  • node遍历文件夹
  • 深入浅出python中文第二版pdf
  • koa与node.js开发实战
  • android布局背景颜色的代码
  • javascript概述及作用
  • javascript如何定义函数
  • python3连接pg执行命令
  • 上海个人所得税优惠政策
  • 宁夏电子税务局官网登录入口首页
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设