扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
AIDL文件怎么在Android Studio项目中创建?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
我们一直强调网站建设、网站制作对于企业的重要性,如果您也觉得重要,那么就需要我们慎重对待,选择一个安全靠谱的网站建设公司,企业网站我们建议是要么不做,要么就做好,让网站能真正成为企业发展过程中的有力推手。专业网站制作公司不一定是大公司,成都创新互联作为专业的网络公司选择我们就是放心。在Android系统中,跨进程通信是非常普遍的事情,它用到了Binder机制处理进程之间的交互。Binder机制会开放一些接口给Java层,供android开发工程师调用进程之间通信。这些接口android封装到了AIDL文件里,当我们项目用到跨进程通信时可以创建.aidl文件,.aidl文件可以协助我们达到跨进程的通信。下面简单介绍用AndroidStudio创建AIDL文件的过程。
a.新建AIDL文件
1.项目文件夹右键---> new --->选择AIDL
2.自定义一个接口名称
3.创建之后我们看到了xxx.aidl文件,然后编辑自己项目需要实现的方法,这里很简单就获取一个字符串的方法getAllName。
4.写好之后,我们需要重新ReBuild,完后在项目build/generated/source/aidl/debug/包名 目录下就看到了系统为我们生成的以刚才.aidl文件名命名的java文件。
该java文件系统会自动生成代码:
Stub:描述了一个Java服务,对应是一个远程的Service。
Proxy:描述了一个Java服务的代理对象,在Client端就会得到这个对象。
这两者都实现了IPersonManager接口。
asInterface:将Java服务的代理对象即一个BinderProxy封装成了一个IPersonManager.Stub.Proxy对象,实现了IPersonManager接口。
onTransact:负责接收分发进程间的通信。它首先会收到Client发来的请求,不同的方法进入相应的case代码中,然后交给Stub的子类去处理事件,例如 java.lang.String _result = this.getAllName(); 这里的this就可以让它的子类去接收该请求并处理。
IBinder的transact方法:用来发送进程间的请求。
b.利用AIDL实现进程间的通讯
一:接口文件中只含有基础数据类型
如上aidl文件,IPersonManager中只用到了基本数据类型,此时要完善Server端的小项目,还需要新建一个Service。
Server端代码如下
public class PersonService extends Service { private static String names = "alice & iland"; public PersonBinder mPersonBinder; @Override public void onCreate() { super.onCreate(); mPersonBinder = new PersonBinder(); } @Override public IBinder onBind(Intent intent) { return mPersonBinder; } public class PersonBinder extends IPersonManager.Stub{ @Override public String getAllName() throws RemoteException { return names; } } }
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流