| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> Kotlin进程通信------AIDL -> 正文阅读 |
|
[移动开发]Kotlin进程通信------AIDL |
前篇介绍了进程通信中,串行通信的方式Messenger。但如果进程间,有多个方法要并行调用,那么Messenger就不合适使用,而应该使用AIDL方式。 Java方式的AIDL,在之前的文章中有介绍:Android远程接口之AIDL——Parcelable、in、out、inout简例 此处,主要将前文中的Java方式用Kotlin方式翻译。 AIDL方式通信,在Kotlin中遵循和Java中同样的规则,包括数据结构的限制,AIDL文件的编写。 一、AIDL文件编写AIDL文件的编写,有特定的要求如下:
除基础类型外,如果我们要自定义类,需要手动导入(import),并且aidl文件和同名类文件的位置,有做要求: 以上图为例: 1、aidl文件夹与java文件夹,同层次 2、自定义的类,如果要在aidl中使用,有两个需要注意的地方: ? ? ? 2-1: 需要在java文件夹、aidl文件夹两处地方都做定义,并且包名需要一致,如图中的UserInfo类。 ? ? ?2-2: 如UserInfo这种在aidl中使用的自定义类,需要实现 Parcelable 接口。 了解以上规则,就用代码实现相应逻辑。 3、具体的AIDL文件如下(kotlin中,具体的aidl文件写法,还是java形式的): 3-1 IBase.aidl
3-2 UserInfo.aidl
二、server端实现server端,只需要实现service接口,并返回onBind的实现即可。此处IBase.Stub即是服务的实现。 kotlin中,服务的实现,应该是屏蔽了in、out 、inout参数的差异。此处生成的方法都是统一以out修饰。此处有疑议,如有不对请指出。
三、client端实现client端的实现,流程也很清晰。先连接上服务,之后,可通过接口调用具体的服务。 1、连接服务
2、调用服务
最后,别忘了在manifest中加上service的定义:
至此,完成aidl的进程通信。 aidl的信息通信,主要的嘈点在于aidl文件编写和规范、连接管理较为繁琐。可以在这基础上,封装一套简易通信框架。期待后续。 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年2日历 | -2025/2/5 20:06:41- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |