位置: 编程技术 - 正文

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

  • 国内税和国外税
  • 高新技术企业加计抵减
  • 买一赠一的税务怎么算
  • 简易计税的增值税要计提附加税吗
  • 本期准予抵减税额怎么算
  • 小企业以前年度损益调整科目编码
  • 注册公司认缴资本不缴可以吗
  • 工业土地划拨性质有年限吗
  • 委托贷款的资金借出方是谁
  • 开票方没缴税咋办
  • 应收账款计提坏账后收回
  • 企业外包项目如何确认收入成本配比?
  • 物业公司代收的电费差额收入
  • 装修公司在装修完后增加费用
  • 提示没有安装QQ怎么处理
  • 赠送视同销售是按照售价还是成本缴纳增值税
  • 公司所得税汇算清缴退税流程
  • 支付境外佣金的记账凭证
  • 企业支付短期借款利息1000元
  • 败诉赔偿如何支付
  • 外贸公司是做什么的 经营范围是什么
  • 软件企业即征即退账务处理
  • 银行贷款入公账怎么入分录?
  • windows11如何
  • 清算资金往来借贷方什么意思
  • 企业接受捐赠的固定资产账务处理
  • 城市生活垃圾处理方法
  • 跨年的费用怎么做账
  • 收到退款发票的分录
  • 什么是减值测试方法
  • thinkphp3.2.3缓存漏洞
  • cvpr2017最佳论文
  • 单位购买降暑用品
  • 计提折旧事考虑了残值净值怎么算
  • “从零开始”
  • vue2计算属性和vue3的计算属性的区别
  • Vue3【Transition(效果、CSS 过渡、使用animation、TransitionGroup、 KeepAlive、Teleport )】(七)-全面详解(学习总结---从入门到深化)
  • css选择器详解
  • 出口免税税务备案流程图
  • 文章初审过了
  • python初探
  • 含税采购金额怎么算
  • 资源税类的税种是
  • CMS不要让MySQL为你流泪
  • 个体户开公账户每个月要申报吗
  • 开票系统服务费计入什么费用
  • 车间报销维修费会计科目
  • 公司利润如何提取避税
  • 向银行按揭贷款时,收入流水不够怎么办?
  • 销售收入小于销售成本
  • 收到社保局返还的各类社保款项应从哪个表单发起
  • 怎样计算税款
  • 按季度报税怎么处理
  • 联营企业和合营企业的持股比例
  • 预期信用损失影响损益吗
  • 公司收到劳务发票交个税吗
  • 公司运营成本如何计算
  • 研发支出资本化支出在资产负债表哪里体现
  • mysql必知必会mobi
  • mssql CASE,GROUP BY用法
  • bios没有usb启动项解决方法联想
  • macbookair自带系统
  • win7共享文件权限设置
  • 微软系统如何恢复出厂设置
  • windows8使用教程
  • 利用图片密码登录微信
  • cocos2dx-js
  • ghost此应用无法在你的电脑上运行
  • Unity3d HDR和Bloom效果(高动态范围图像和泛光)
  • javascript模拟器
  • 用js实现类的方法
  • javascript概述
  • 获取intent传递的数据
  • 深圳企业所得税税率多少
  • 遵从与尊从
  • 地方税务局和国家税务局合并
  • 苏州买房退契税政策2023
  • 一般纳税人服务费是几个点
  • 本季度可以弥补上季度亏损吗
  • 税控ic卡就是税控盘吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设