1
aidl,messager,binder适用场景
快捷键 Ctrl+Alt+M 选中代码 快捷生成方法
Android studio 创建aidl文件后,需要点击编译(make projece 小铁锤图标)进行编译后,才可以使用
AIDL:Android Interface Definition Language(Android 接口定义语言)
AIDL ipc 多线程 多应用程序
Binder ipc 多应用程序
Messenger ipc
ps:ipc是进程间通信
AIDL-进程之间的通信
这个课程会学到什么
每一个应用程序都以进程方式运行,都拥有一个独立的虚拟机实例,保持安全性,所以两个程序之间无法直接通信
aidl跨进程通信的原理是:
客户端获取代理,代理通过操作系统与服务端通信,再调用服务端接口的实现,然后返回结果。
AIDL传递对象时,对象需要实现Parcelable接口。并且在aidl文件中要使用parcelable字段定义对象。然后在接口文件aidl中导入定义的aidl对象。并使用in修饰参数。
支持的几乎所有java基本,除了short。
支持List,map。
支持String,CharSequence。
支持Parcelable
AIDL的客户端代码,使用bindService通过实现connection来获取返回的IBinder。再通过AIDL生成的java代码里的Stub.asInterface方法来获取定义的接口对象,然后调用接口中定义的方法就可以了。
aidl采用s/c架构,这里以计算两个数字的和为例,在服务端定义了aidl接口,并且在Service中实现,通过返回实现接口方法的IBinder来与客户端通信。
aidl生成java文件是依靠build tool里的aidl工具生成的。在Android Studio中的基本操作步骤是:
在aidl文件下创建包目录(如果使用预设的aidl创建,会自动生成对应的包目录)
编写aidl文件,定义接口
编译工程。本质上是提醒as调用aidl工具生成java文件
两种环境生成aidl的案例
Android接口定义语言
IPC进程间通信
Android中三种通信方式和使用场景:
AIDL IPC 多个应用程序 多线程
Binder 只有IPC 没有多线程 多个应用程序
Messenger 只有IPC 没有多线程
Android中每个应用程序独立拥有一个虚拟机,所以应用程序之间不能直接通信。
跨进程的数据通信是通过Android系统底层实现的
学习目的:
AIDL的基本理论
AIDL的远程调用案例
AIDL原理简单剖析
aidl原理解刨
step1
Binder,Message同AIDL一样可以实现进程间通信
区别:
AIDL——IPC 多个应用程序 多线程
Binder—— 只有IPC 没有多线程 多个应用程序
Message—— 只有IPC 没有多线程
在安卓中,每个应用程序独自拥有一份虚拟机,两个进程无法直接通信,通过Android系统底层间接通信(代理)
保证了进程内数据的安全性
系统的稳定性:一个应用崩溃后,不至于其他应用也崩溃
Android SDK提供的四种跨进程通信???
https://blog.csdn.net/hijson/article/details/52896480
基于Service的跨进程通信,叫AIDL
AIDL的基本理论
AIDL远程调用案例
AIDL原理的简单剖析
AIDL
使用AIDL只有在你允许来自不同应用的客户端跨进程通信访问你的service,并且想要在你的service种处理多线程的时候才是必要的。 如果你不需要执行不同应用之间的IPC并发,你应该通过实现Binder建立你的接口,或者如果你想执行IPC,但是不需要处理多线程。那么使用Messenger实现你的接口
AIDL IPC 多个应用程序,多线程
Binder 只有IPC 没有多线程 多个应用程序
Messenger 只有IPC 没有多线程
AIDl. 跨进程 多个应用程序 多线程
Binder 跨进程。 多个应用程序
Service。跨进程。