Android IDL =aidl 是一种idl(接口定义)语言,轻量级
它可以生成一段代码,可以使在一个Android设备上运行的两个进程使用内部通信进程进行交互。
1.建立一个aidl文件
package com.google.android.sample;
interface MDSInterface{
void playFile(int position);
};
2.aidl会自动生成一个接口文件,文件名和aidl文件名一致,生成的接口包括一个内部抽象类,名称为Stub.
MSDTnterface.Stub mBindler = new MSDTnterface.Stub(){
void playFile(int position){
//To_do sth
}
}
实现接口的几个原则:
1) 抛出的异常不要返回给调用者;
2) IPC调用是同步的,如果你知道一个IPC服务需要超过几毫秒的时间才能完成的话,你应该避免在Activity/View线程中调用
3) 只有方法才获得支持,换句话说不支持变量
4) 不能在aidl接口声明静态属性。
3.发布服务,继承Service,并实现getBinder()/onBind()返回一个实现的类的定制
public class MDService extends Service{
public IBinder onBind(Intent intent){
return mBinder;
}
private final MDSInterface.Stub mBinder = new MSDTnterface.Stub(){
}
}
4.被调用者调用
public class MusicDroid extends Activity{
public MDSInterface mpInterface;
publiv void onCreate(Bundle icicle){
bindService(new Intent(MusicDroid.this, MDService.class), mConnection, Context.BIND_AUTO_CREATE);
}
private ServiceConnection mConnection =new ServiceConnection(){
public void onServiceConnected(ComponentName classname, IBinder service){
mpInterface=MDSInterface.Stub.asInterface((IBinder).Service);
}
public void onServiceDisconnected(ComponentName classname){
mpInterface = null;
}
}
}
分享到:
相关推荐
Android工作实践总结:Aidl 远程调用(aidl实例总结) AIDL的IPC的机制和COM或CORBA类似, ...它使用代理类在客户端和实现层间传递值. 如果要使用AIDL, 需要完成2件事情: 1. 引入AIDL的相关类.; 2. 调用aidl产生的class.
源组件: app:AIDL服务部分hbriqaidlclient:AIDL客户端部分hbriqaidl:AIDL接口 建造: 将ANDROID_HOME导出到sdk路径对于调试apk: $ ./gradlew assembleDebug 跑步: 安装生成apk文件到目标例如亚行安装./...
android学习之aidl的资料1 方便大家学习aidl.并测试上传资源。谢谢大家
AidlDemo_client Aidl客户端
天气-AIDL AIDL界面和Android服务的示例。 额外:使用AIDL从服务启动Google Maps。
android_AIDL AIDL的理解和使用
AidlClient aidl 基本用法 博客地址链接
人工智能DL AIDL 示例
你知道你需要进程间通信、需要AIDL(以及Binder),那么可以默认你对这些概念已经有了一些了解,你(大致)知道它们是什么,它们有什么用,所以为了节约大家的眼力和时间,在此我不复制粘贴网上泛滥的博客或者翻译...
服务器演示aidl服务端客户端代码在MyApplication里面
aidl:aidl是 Android Interface definition language的缩写,一看就明白,它是一种android内部进程通信接口的描述语言,通过它我们可以定义进程间的通信接口 Demo中包含服务端和客户端 原文链接:...
1.实现AIDL双向绑定 2.demo使用kotlin实现
作用:可以在一个进程中获取另一个进程的数据和调用其暴露出来的方法,从而满足进程间通信的需求。 1.AIDL支持的基本数据类型 八种基本数据类型:byte、char、short、int、long、float、double、boolean String,...
ITelephony.aidl和NeighboringCellInfo.aidl
AIDL概述:AIDL是一个缩写,全称是Android ...接下来我写了两个demo(AildeService和AidleClient),他们之间通过AIDL方式实现两个进程之间互相通信。详细介绍见简书网址http://www.jianshu.com/p/4839abb93b47
2:aidl下创建 Dog.aidl,里面两句话就可以了 (1)package s包名; (2)parcelable Dog; 3:interface.aidl引入Dog类, import s包名.Dog; Client 端: 1:创建类Dog,需要实现Parcelable接口; 2:aidl下创建 Dog....
21.0.0版本的aidl.exe文件 https://blog.csdn.net/qq_35501560/article/details/104928761
CodeSquad PS1 技术针对AIDL 2020问题陈述1的解决方案。问题给定票据/发票的图像,任务是执行以下3种操作: 边缘检测,裁切,拉平,裁切图像的增强和压缩。 从处理后的图像中提取文本。 图像到文本转换的置信度得分...
**最近我学习到安卓AIDL这篇文章,我...官方表达是:AIDL可以简化进程间数据格式转换和数据交换的代码,它允许在不同进程的调用者和Service之间相互传递数据,其属于轻量级的进程通信机制。 注意: AIDL定义接口的源代
在目录src/main 下新建了aidl 文件夹之后,在aidl文件夹中也创建了相同的包路径, 创建AIDL文件 XXX.aidl 如果XXX.aidl引用了一个java下的model例如引用了a.b.c.Model; 则需要在XXX.aidl文件中声明import a.b.c....