Android AIDL 一探究竟详解编程语言
2023-06-13 09:20:39 时间
AIDL (Android Interface Definition Language)Android接口定义语言
简述:
1、什么时候使用?
2、如何实现 AIDL 通信?
下面是项目目录结构图:客户端与服务端代码要保证 aidl 文件夹下内容的一致
步骤①:创建一个AIDL文件. (在服务端)
1 // IMyAidlInterface.aidl 2 package com.anglus.aidl; 4 // Declare any non-default types here with import statements 6 interface IMyAidlInterface { 7 /** 8 * Demonstrates some basic types that you can use as parameters 9 * and return values in AIDL. 10 */ 11 // 计算两个数的和 12 int add(int num1, int num2); 13 }
步骤②:实现自定义的AIDL 接口文件(在服务端)
public class IRemoteService extends Service { @Override public IBinder onBind(Intent intent) { return mIBinder; private IBinder mIBinder = new IMyAidlInterface.Stub() { @Override public int add(int num1, int num2) throws RemoteException { Log.i("IRemoteService", "收到远程的请求,传入的参数是:" + num1 + "和" + num2); return num1 + num2; }
一定不要忘了在 AndroidManifest.xml 文件中注册服务:
service android:name=".IRemoteService" android:enabled="true" android:exported="true"/
步骤③: 绑定服务,得到远程服务对象,即可在客户端进行使用。
1 private void bindService() { 2 // 绑定到服务 3 Intent intent = new Intent(); 4 intent.setComponent(new ComponentName("com.anglus.aidl", 5 "com.anglus.aidl.IRemoteService")); 6 bindService(intent, conn, Context.BIND_AUTO_CREATE); 7 } 9 private ServiceConnection conn = new ServiceConnection() { 10 @Override 11 public void onServiceConnected(ComponentName name, IBinder service) { 12 // 拿到远程服务 13 iMyAidlInterface = IMyAidlInterface.Stub.asInterface(service); 14 } 16 @Override 17 public void onServiceDisconnected(ComponentName name) { 18 // 回收资源 19 iMyAidlInterface = null; 20 } 21 };
注意:在 new ComponetName() 中,第一个参数是:服务端的 项目包名;第二个参数是:要绑定的服务 包名 + 类名。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/13423.html
cgojavaxml相关文章
- android scaleanimation动画,【Android动画九章】-RotateAnimation(旋转动画)和ScaleAnimation(尺寸动画)…[通俗易懂]
- Android UpdateEngine模块流程(含序列图)
- android+制作开机动画,Android 开机动画制作详解
- 代码加密 android,Android 开发怎样做代码加密或混淆「建议收藏」
- android 混淆规则作用,Android代码混淆详解
- android 定时器重置,Android定时器延迟和重置[通俗易懂]
- Android 编译_android线程
- 【错误记录】Android Studio 集成 ARoute 编译报错 ( 兼容 support 库和 androidx 库 | add ‘tools:replace=“android:appCo )
- 【Android Gradle 插件】组件化中的 Gradle 构建脚本实现 ⑤ ( 优化 Gradle 构建脚本 | 构建脚本结构 | 闭包定义及用法 | 依赖配置 | android 块配置 )
- Android控制文字水平间距android:letterSpacing详解手机开发
- Android FutureTask 分析详解编程语言
- HTTPS 原理浅析及其在 Android 中的使用详解编程语言
- android实现的AES加密详解编程语言
- java Android 检查当前是否已经连接上 Internet详解编程语言
- Android非UI线程更新UI的几种方法详解编程语言
- android连接服务器下载文件工具类详解编程语言
- android后台发送邮件详解编程语言
- Android中ListView上拉加载更多及下拉刷新详解编程语言
- 使用FileObserver 类监听android sd卡变动详解编程语言
- 获取Android设备屏幕宽、高、dpi密度及横竖屏等参数详解编程语言
- Android实现TextView文字水平滚动效果实现详解编程语言
- PhoneGap 搭建Android应用环境详解编程语言