位置: 编程技术 - 正文

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

  • 政府农民合作社架构
  • 劳务费个人所得税由谁申报
  • 消费税可以在企业抵扣吗
  • 印花税是根据销售额提吗
  • 甲是乙公司依法设立的分公司
  • 资产负债表日后调整事项与非调整事项的区别
  • 商业承兑汇票贴现手续费是多少
  • 保费 车船税
  • 税控系统技术维护费抵税怎么申报
  • 工会疗养政策对比
  • 工程未竣工如何结算
  • 计提房屋折旧会计分录
  • 河道维护中心职责
  • 公司向贷款公司贷款做账分录
  • 公司是否可以开电子发票
  • 货运代理公司可以开运输费发票吗
  • 个人所得税申报方式选哪个
  • 工会开票是否需要开户银行
  • 6位开票代码是什么意思
  • 企业合同约定调岗不接受辞退没赔偿成立吗
  • 坏账损失如何连续计提
  • 营业外支出应填什么科目
  • 会计报表附表属于会计报表内容吗
  • 房地产土地增值税加计扣除20%
  • 预收培训费怎么确认增值税
  • 注册的注释
  • 会计监督作用
  • 其他债权投资发生减值会影响所有者权益总额吗
  • 水利基金减免怎么做账
  • linux禁止ip访问80端口
  • win7打开启动
  • 包装物交不交消费税
  • 土地增值税案例题库
  • 工资储备金制度
  • php点击跳转
  • 模拟电子技术基础知识点总结
  • 土增税清算时怎么做会计分录
  • php二分查找算法两种方法
  • 应收帐款质保金
  • 用友财务软件怎么下载到电脑
  • 帝国cms视频教程
  • 列入固定资产的金额标准
  • 数据库 sql优化
  • 以房抵债的税会退税吗
  • 多交增值税退税抵欠怎么处理
  • 低值易耗品摊销表格
  • 减值准备减少记哪方
  • 暂估商品入库 后收到发票怎么做分录
  • 信息技术服务费属于什么费用
  • 应付账款周转率越大越好还是越小越好?
  • 缴纳房产税和城镇房产税
  • 营销策划费用是
  • 以前年度损益调整账务处理分录
  • 员工代垫费用能用公户转吗
  • 股东借款转为资本公积的决议
  • 购进货物用于集体福利要交增值税吗
  • 消费税什么时候计入成本
  • etc发票申请流程
  • 其他综合收益属于什么科目借贷
  • 电信收据可以报销吗
  • 出口的样品如何销售
  • 数据库sql分组
  • 电脑windowsxp无法启动怎么办
  • iis设置mime
  • ubuntu gvfs
  • 海尔笔记本最新款
  • win8待机后无法唤醒
  • win7打开摄像头权限
  • win10系统打开安装程序没反应
  • javascript的代码写在哪里
  • python os.access
  • Linux中的host命令应用实例详解
  • jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解
  • unity3d Human skin real time rendering with blood and water drop effect真实模拟人皮实时渲染之血液和水珠掉落效果
  • 湖北农信换手机登录不了
  • 国税人事部门党建工作(税务局党建部门)
  • 税务异地协查系统管理办法
  • 中欧班列补贴政策
  • 企业所得税的税负率多少合适
  • 手机的海关税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设