一个小Demo来理解关于IPC(进程间通信)中的aidl

项目地址:Server端代码:Server端代码链接Client端代码:Client端代码链接1、IPC的基本要求IPC(Inter-Process Communication)进程间通信是要在两个相互独立的进程之间进行信息的传递,在Android中每个进程都会被分配一个独立的虚拟机,以及内存空间,还会有自己的Application,所以进程间数据是不共享的,想要共享就只能通过一些方法来让...
摘要由CSDN通过智能技术生成

项目地址:
Server端代码:Server端代码链接
Client端代码:Client端代码链接

1、IPC的基本要求

IPC(Inter-Process Communication)进程间通信是要在两个相互独立的进程之间进行信息的传递,在Android中每个进程都会被分配一个独立的虚拟机,以及内存空间,还会有自己的Application,所以进程间数据是不共享的,想要共享就只能通过一些方法来让这些数据在整两个进程间进行传递。关于如何传递就是要实现序列化(Parcelable、Serializable都可以)。

2、Android中IPC的几种方式
1)Bundle

也就是使用Intent携带Bundle信息在两个进程间进行传递,但是Intent一般只用来进行进程间的启动,如果要是用来进行两个进程间信息的传递的话就麻烦了,毕竟信息传递是双向的,Intent虽然也可以进行双向的信息传递,但过程繁琐,处理情况过多,很不方便。

2)文件共享

两个进程同时读/写同一个文件来实现数据的共享,但是文件共享这种方式有一个最大的问题就是并发读/写问题,当另一进程在读数据的同时另一个程序在写数据,这会让数据的同步出现问题。

3)Messenger信使

Messenger是Google提供的轻量级的IPC方案,底层实现也是AIDL,但是Messenger的最大问题是它以串行的方式来处理客户端发送来的消息,如果大量的消息同时发送到服务端,服务端应然只能一个个处理,如果有大量的并发请求,那么用Messenger就不合适了。

4)AIDL(Android interface definition language)
3、AIDL的使用

AIDL要求在使用的Client端与Server端有相同的AIDL文件,所以呢在工程中新建一个包,然后把所有的AIDL文件都放在这个包名下,然后再去进行拷贝,这样写会容易一些,但是还会有这样那样的问题,下面来看一下到底如何使用

1)Server端

在这里插入图片描述
Android Studio会自动为AIDL文件创建新包,位置为app–>src–>main–>aidl
新建一个名为IStudentInterface的AIDL文件,并添加两个函数来进行示例操作

package com.example.administrator.ipc_server;
import com.example.administrator.ip
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值