导航:首页 > 数据处理 > 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数据传不过来怎么办相关的资料

热点内容
造价信息和定额按照哪个计算 浏览:407
数据中心低压开关柜一般是多少a 浏览:175
北京省级报社哪个刊登信息便宜 浏览:785
三项数据如何对比记忆 浏览:953
交易记录软件哪个最好 浏览:862
安徽餐饮公司财务代理怎么样 浏览:104
儿童漆如何代理 浏览:325
产品经理如何和研发沟通 浏览:963
如何将一台手机的数据换到另一台 浏览:792
万能小程序在哪里找 浏览:103
智能科学与技术主要研究什么 浏览:513
英文文献检索一般使用哪个数据库 浏览:253
崇州淘宝卖什么产品比较火 浏览:740
2021青岛职业技术学院学费多少 浏览:606
数字经济以什么为代表的信息技术 浏览:369
bter交易怎么收取费用 浏览:178
如何查看已报名完毕的高考信息 浏览:240
幼儿园老师没回信息在忙什么 浏览:930
jsp技术怎么写查重率低 浏览:176
ie弹窗阻止程序是什么意思 浏览:532