android studio环境下实现AIDL的碎碎念
来源:互联网 发布:华为平台软件 编辑:程序博客网 时间:2024/04/27 18:40
AIDL(android Interface Definition Language) 多用于运行于android操作系统上的进程之间实现并发通信,AIDL通过使用 .aidl 文件实现接口的调用。常见接口文件定义如下:
<span style="font-size:18px;">package com.example.android.aidlserver;interface MyParcelable { void basicTypes(int anInt, long aLong, boolean aBoolean, float aFloat, double aDouble, String aString);}</span>
aidl文件的接口定义语法与java接口定义语法基本一致,支持基本数据类型和List Map, 对于自定义对象的引入则需要import,并且自定义对象必须实现Parcelable接口。详细说明参照android AIDL官方教程。(注意:实现了Parcelable的自定义对象也需要创建自己的aidl文件)。常见aidl文件及相关类定义于下:
mAidlInterface.aidl
package com.example.android.aidlserver;import com.example.android.aidlserver.MyParcelable;interface mAidlInterface { String introduce(in MyParcelable mp);}
MyParcelable.java
package com.example.android.aidlserver;import android.os.Parcel;import android.os.Parcelable;public class MyParcelable implements Parcelable { private int mData; public int describeContents() { return 0; } public void writeToParcel(Parcel out, int flags) { out.writeInt(mData); } public static final Parcelable.Creator<MyParcelable> CREATOR = new Parcelable.Creator<MyParcelable>() { public MyParcelable createFromParcel(Parcel in) { return new MyParcelable(in); } public MyParcelable[] newArray(int size) { return new MyParcelable[size]; } }; private MyParcelable(Parcel in) { mData = in.readInt(); }}
MyParcelable.aidl
package com.example.android.aidlserver;parcelable MyParcelable;
对于最新版本的android studio 右键new AIDL-AIDL File后,会自动在src/main/目录下创建路径 aidl/<package name>创建的aidl文件即放在这个路径下,根据之前的相关博文以及stackoverflow上的相关问题提示,应将自定义对象的java文件和aidl文件都放于此目录(即上文中的MyParcelable.java 和MyParcelable.aidl) 。
接下来通过build project IDE会自动生成与定义接口相关的文件,文件创建的路径为:app/build/generated/source/aidl/debug/<package name> 下。如下图示:
问题来了,在build的过程中编译器报错。提示如下:
找不到符号(cannot find symbol)即在debug中生成的文件找不到MyParcelable类的定义。
尝试了n种方法后发现,MyParcelable.java 文件不能放在aidl/<package name>路径下!(即不应该与MyParcelable.aidl放在一起)而是应该放在工程的java/<package name>路径下。这样rebuild,就不会再报错了。即文件路径如下图:
之后的工作在service中实现相关接口的方法即可,详细方法参照上文中的官方教程,在此不再赘述了。
另附AIDL Callback的样例代码以供参考:AIDL server and client(作者编写)
他人编写示例:AIDLserver AIDLclient
- android studio环境下实现AIDL的碎碎念
- android studio环境下实现AIDL的碎碎念(转载)
- 在Android studio环境下的AIDL示例
- Android Studio 实现AIDL时在不能使用 aidl 目录下内容的解决方法
- Android Studio AIDL实现
- android studio下aidl的使用
- Android Studio下AIDL的使用方法
- android studio下的aidl通信
- Android AIDL简单实现(Android Studio环境)
- Android studio 1.2开发环境下配置AIDL,生成相应的.java文件
- Android studio 下的aidl编程实现Android的夸进程间通信
- Android studio下AIDL操作
- Android Studio下使用aidl
- android studio下aidl编程
- Android Studio实现Service AIDL
- Android Studio实现Service AIDL
- Android studio实现Service AIDL
- Android Studio中实现AIDL
- xmapp多工作目录配置
- 将博客搬至CSDN
- opencv2鼠标选择感兴趣区域后对两幅图像进行均值漂移算法
- Kinect+PCL读取点云并存储
- 第17周 项目4-2 生日相差几天
- android studio环境下实现AIDL的碎碎念
- 怎么让鼠标检测点击到的物体并出发事件
- MFC状态栏创建和设计
- SVN服务器二
- 紫外线杀菌器:家用净水器运用紫外线杀菌器的优势概述
- 20.Swift-扩展
- Binary Tree Zigzag Level Order Traversal
- 笔记(.live)
- 【项目总结(一)】---视频摘要matlab的程序实现几个问题的总结