AIDL使用
来源:互联网 发布:c语言实验报告怎么写 编辑:程序博客网 时间:2024/06/06 09:43
AIDL是一个缩写,全称是Android Interface Definition Language,也就是Android接口定义语言。
3、新建一个service,和AIDL的实现类,在onBind的时候,返回实现类实例:
请求端(客户端):
1、新建一个同路径、同名的aidl文件
2、绑定service:
使用感受
支持这些基本数据类型byte、short、int、long、float、double、boolean、char、String、CharSequence,如果使用其他数据类型,则需要定义(本文不做介绍)。
适用情况:主要用于调用远程服务的方法的情况。
AIDL是跨进程通信,可以说是两个不同应用间的通信,下面分为两个部分来做介绍。
实现端(服务端):
1、在android studio中任意一路径下,右键根据模板新建一个aidl文件(如图)
,AS会自动在aidl目录下新建一个相同路径的aidl文件,添加接口方法:
package com.example.droidplugindemo;interface LoginAidl { String getUsername();}2、编译项目,在build/generated/source/aidl/debug目录下会生成一个跟上述aidl文件同路径、同名的java文件(这个文件我们不用管,但其实就是它在起作用)
3、新建一个service,和AIDL的实现类,在onBind的时候,返回实现类实例:
public class LoginService extends Service { @Nullable @Override public IBinder onBind(Intent intent) { return new LoginServiceImpl(); } private class LoginServiceImpl extends LoginAidl.Stub { @Override public String getUsername() throws RemoteException { return "qq"; } }}4、在AndroidManifest.xml文件中定义service:
<service android:name=".LoginService"> <intent-filter> <action android:name="com.example.test.login" /> </intent-filter></service>
请求端(客户端):
1、新建一个同路径、同名的aidl文件
2、绑定service:
Intent intent = new Intent("com.example.test.login");bindService(intent, conn, Context.BIND_AUTO_CREATE);3、连接service成功后获取返回值:
private LoginAidl loginAidl;private ServiceConnection conn = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { loginAidl = LoginAidl.Stub.asInterface(service); Log.e("test", "onServiceConnected"); try { Log.e("test", loginAidl.getUsername()); } catch (RemoteException e) { e.printStackTrace(); } } @Override public void onServiceDisconnected(ComponentName name) { Log.e("test", "onServiceDisconnected"); }};
使用感受
感觉使用起来较为繁琐,用广播也可以实现跨进程通信,使用起来却是简单很多,存在既有必要,详见Android跨进程通信之AIDL机制和广播机制的异同
参考:
Android:学习AIDL,这一篇文章就够了(上)
AIDL介绍和实例讲解
Android IPC的6种方式
0 0
- 使用AIDL
- AIDL使用
- AIDL使用
- AIDL使用
- 使用AIDL写Service
- Android AIDL使用详解
- AIDL的使用
- AIDL使用示例
- Android AIDL使用详解
- android aidl的使用
- Android AIDL使用
- Android AIDL使用详解
- Android AIDL使用详解
- Android AIDL使用详解
- Android AIDL使用详解
- Android AIDL使用详解
- Android AIDL使用详解
- Android AIDL使用详解
- 安卓开发之自定义控件实现MaterialEditText
- poj 2251 Dungeon Master(BFS)
- JAVA从菜鸟【入门】到新手【实习】一一一一Python:黑客与逆向工程师的Python编程之道
- 尝试做了ShareSDK For Unity 分享内容
- HDU ACM 11 2030 汉字统计
- AIDL使用
- 排序算法——插入排序
- MySQL主从复制读写分离与Yii2实现
- VC++60 第十四章 单文档界面的程序
- 1022. D进制的A+B (20)
- cmd 分割字符串
- libpng-1.2.12.tar.gz安装与移植
- Android群英传知识点回顾——第八章:Activity与Activity调用栈分析
- RGB1-----分离RGB24像素数据中的R、G、B分量和生成RGB24格式的彩条测试图