美文网首页
在Android5.0中使用AIDL

在Android5.0中使用AIDL

作者: 秃渐强 | 来源:发表于2019-01-14 14:40 被阅读0次

1.AIDl是什么

AIDL(Android 接口定义语言) 是 Android 提供的一种进程间通信 (IPC) 机制。我们可以利用它定义客户端与服务使用进程间通信 (IPC) 进行相互通信时都认可的编程接口。在 Android 上,一个进程通常无法访问另一个进程的内存。 尽管如此,进程需要将其对象分解成操作系统能够识别的原语,并将对象编组成跨越边界的对象。编写执行这一编组操作的代码是一项繁琐的工作,因此 Android 会使用 AIDL 来处理。通过这种机制,我们只需要写好 aidl 接口文件,编译时系统会帮我们生成 Binder 接口。

2.怎么生成AIDL

 点击右键--->New--->AIDL

在最新的AndroidStudio版本中,不需要Rebuild即可生成AIDL的java文件,

在生成的AIDL文件中可以定义你的返回类型,AIDL支持的类型:

1. Java 的基本数据类型

2.List 和 Map

3.其他 AIDL 生成的接口

4.实现 Parcelable 的实体(实现 Parcelable 接口是为了后序跨进程通信时使用)

生成的AIDL文件

你可以在你的AIDL文件中定义你想要的返回类型和方法名称,生成的AIDL文件会显示在你的/src/main下面的aidl文件夹中

2.AIDL的示范

新建一个Service,这个service需要在你的AndroidManifest中进行注册。

注册Service

Intent Filter就是 用来注册 Activity 、 Service 和 Broadcast Receiver 具有能在某种数据上执行一个动作的能力。使用 Intent Filter ,应用程序组件告诉 Android ,它们能为其它程序的组件的动作请求提供服务,包括同一个程序的组件、本地的或第三方的应用程序。

图2

IMyAidlInterface就是你新建的AIDL的文件名,IMyAidlInterface.Stub是编译器替你生成,假如没有自动生成,Rebuild项目即可。

3.AIDL的使用

图3

在android5.0中,隐式调用service会报错,解决办法就是加上

intent.setPackage("你的包名");这一句代码

在ServiceConnection中,我们会把IBinder传入到

IMyAidlInterface中的Stub的asInterface方法中,这个方法的作用是将IBinder对象转换为IMyAidlInterface接口,如果需要,生成代理。生成的这份代理中就有我们所需要的返回方法

相关文章

  • 在Android5.0中使用AIDL

    1.AIDl是什么 AIDL(Android 接口定义语言) 是 Android 提供的一种进程间通信 (IPC)...

  • Android中的AIDL

    Android中的AIDL使用详解 AIDL使用解析 Android进阶之AIDL的使用详解

  • AIDL

    Android中AIDL的基本用法Android 中AIDL的使用与理解Android AIDL使用详解彻底明白A...

  • Android中AIDL的工作原理

    在上一篇文章中Android中AIDL的使用详解介绍了AIDL的使用流程,这篇文章我们说说AIDL的工作原理。 I...

  • AIDL 在 AMS 中的使用

    前面跟着书本整理过 AMS 相关的源码 Android 进阶解密阅读笔记7[https://www.jianshu...

  • AIDL的使用步骤(即如何工作)

    在弄清AIDL是如何使用Binder实现进程间通信的之前,我们应该要知道我们在使用AIDL的简要步骤 一、AIDL...

  • Android-服务(AIDL通讯)

    本文学习目标 学会使用AIDL与远程服务进行通讯 AIDL介绍 AIDL是Android中IPC(Inter-Pr...

  • Android AIDL

    通过此文记录以下自己在使用AIDL时的一些理解。在Android Studio中首先定义.aidl文件: 紧接着M...

  • 016 Messenger

    除了使用 AIDL 进行 IPC 外,我们还可以使用 Messenger 来替代 AIDL。通过在 Message...

  • Android 的进程间通信 Binder——AIDL的入门使用

    进程间通信系列 AIDL的入门使用(一) AIDL的入门使用(二) AIDL的入门使用(三) Messenger的...

网友评论

      本文标题:在Android5.0中使用AIDL

      本文链接:https://www.haomeiwen.com/subject/epnddqtx.html