导航:首页 > 数据处理 > aidl数据传不过来怎么办

aidl数据传不过来怎么办

发布时间:2024-10-28 15:00:35

1. Android:AIDL进程间通信基本框架

在某些业务场景下,我们需要在应用中单独开启一个进程进行一些操作。比如性能监控,如果让原始业务和性能监控本身的业务跑在同一个进程下,那么就会导致性能统计的数据的失真。

而进程间通信,一般采用AIDL机制的客户端与服务端通信。

AIDL只能传递如下几类数据:

当传递自定义 Parcelable 时,有三处地方需要注意:

当传递其他 aidl 接口时,同样必须要 import 这个 aidl 文件

编写完 aidl 文件后,make一下工程,会在 build 下的 generated 下的 source 下的 aidl 目录生成对应的接口类文件。aidl 接口其实就是 API 接口,通过实现对应接口类的 Stub 子类来实现具体的 API 逻辑;通过对应接口类的 Stub 子类的 asInterface 方法得到具体的实现类,调用具体的 API 方法。

一个基本的客户端服务端的通信结构一般包括如下功能

客户端的功能

服务端的功能

客户端的相关功能实现比较简单,麻烦的是服务端的功能。因为 AIDL 接口定义的都是服务端的接口,是由客户端来调用的。而想要实现服务端反向调用客户端则需要通过其他手段实现。

想要实现服务端主动连接客户端,最好的办法就是 服务端发送广播,客户端收到广播后再主动连接服务端 ,通过这种方式变相地实现服务端主动连接客户端的功能

想要实现服务端主动断开客户端,除了上面 发送广播是一种实现方式外,还可以通过 android 的系统API RemoteCallbackList,用包名作为key值来注册远程回调接口的方式,让服务端持有客户端的回调接口,服务端调用回调接口,客户端在回调接口中实现主动断开服务端 ,通过这种方式变量地实现服务端主动断开客户端的功能。而采用后者会显得更加优雅

既然所有的操作归根结底都是由客户端来完成的,那么客户端必须得有如下的功能模块:

服务端必须得有的功能模块:

那么,整体的通信流程就是如下的步骤:

首先是通信的 aidl 接口定义

然后是客户端的连接操作与断开连接操作,包括广播接收者的注册以及回调接口的实现

然后是客户端的拉取数据和推送数据操作

接着是服务端的 iBinder 接口的实现,完成回调接口的注册、业务子线程的开启和关闭、数据的推送和数据的拉取操作

然后是服务端的主动连接和主动断开连接操作

最后是服务端的 onUnbind 方法的实现,对回调接口进行反注册

服务端模仿 FloatViewPlugin 自定义插件,实现 IServicePlugin 接口,定制个性化的悬浮窗插件

客户端在 Appliaction 的 onCreate方法中初始化

在 MainActivity 上实现连接、断开、数据通信

阅读全文

与aidl数据传不过来怎么办相关的资料

热点内容
肤色暗黄干燥有斑用什么产品好 浏览:921
如何删除发现界面的小程序 浏览:106
山泉水属于什么产品 浏览:565
做不锈钢代理的多少钱 浏览:774
如何自动升级程序 浏览:713
身体里有哪些大数据 浏览:225
技术工怎么提升技术 浏览:872
花容月貌产品怎么样 浏览:395
如何网上交易防骗 浏览:169
游戏小程序怎么设置 浏览:62
农产品名牌怎么弄 浏览:187
蜀门手游多少级可以物品交易 浏览:43
为什么开数据进不了网页 浏览:358
什么是开盘价判断交易密集区 浏览:870
导管射频哪里技术好 浏览:743
要当程序员大学学什么专业 浏览:384
股票交易费怎么算的 浏览:180
用户信息中心是什么意思 浏览:94
有哪些外汇平台可以交易股指 浏览:993
公司怎么收回代理权 浏览:390