1.定义aidl文件——————AIDL进程间通信
在Android平台,每个应用程序App都运行在自己的进程空间。
2.创建.aidl文件, 不同的是要显示import 复杂类型,即便复杂类型对象在同一个包内。 /当时我就没有导入,因为在一个包我认为不用导,一直说类找不到
不需要import Java基本数据类型 (int, long, char, boolean等),String和CharSequence,集合接口类型List和Map
例子:我的aidl在同步回收站
package com.***service.aidl; import com.***service.aidl.DeletedData; import com.*****service.aidl.I****tManagerCallback; interface I*****tManager { void ge****Data(String authority, I******rCallback callback);
void start******tData(String authority,in List<String> ***s, I****rCallback callback); }
可以看见都是一个包的,还是需要导入
我的参数还有回调接口 I*******Callback
我的回调接口
package com.***e.aidl; import com.***service.aidl.DeletedData; import android.os.Message; interface I******rCallback { void onResetResult(in List<DeletedData> del***tas); void onResetingResult(in Message message); }
看见了吗有两个类一个是DeletedData一个是Message要求是实现Parcelable哦
DeletedData 和 Message复杂的对象要写一个in
******************************************************************************下面是aidl自定义的类××××××××××××××××××××××××××××××××××××××××××××××××××××××
我的自定义的类 DeletedData
1.要求一个 DeletedData.aidl
package com.*****rvice.aidl; import com.****ervice.aidl.DeletedData; parcelable DeletedData;
都是上面的格式
2. 写一个DeletedData类实现 Parcelable
package com.****service.aidl; import android.os.Parcel; import android.os.Parcelable; /** * Created **** on 15-9-21. */ public class DeletedData implements Parcelable { private String type; private String sourceid; private String title; private String deleteDay; private int group; public DeletedData() { } public DeletedData(Parcel pl) { //把Parel转成对象的构造函数 this.type = pl.readString(); this.sourceid = pl.readString(); this.title = pl.readString(); this.deleteDay = pl.readString(); this.group = pl.readInt(); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel parcel, int i) { //把他们变成Parcel parcel.writeString(type); parcel.writeString(sourceid); parcel.writeString(title); parcel.writeString(deleteDay); parcel.writeInt(group); } public static final Creator<DeletedData> CREATOR = new Creator<DeletedData>() { //有一个Creator 名字就是CREATOR @Override public DeletedData createFromParcel(Parcel var1) { return new DeletedData(var1); } @Override public DeletedData[] newArray(int size) { return new DeletedData[size]; } }; public void setSourceid(String sourceid) { this.sourceid = sourceid; } public void setTitle(String title) { this.title = title; } public void setType(String type) { this.type = type; } public String getType() { return type; } public String getSourceid() { return sourceid; } public String getTitle() { return title; } public void setDeleteDay(String deleteDay) { this.deleteDay = deleteDay; } public String getDeleteDay() { return deleteDay; } public int getGroup() { return group; } public void setGroup(int group) { this.group = group; } }
**************************************客户端与服务器段的aidl都一样,直接粘贴过去即可××××××××××××××××似乎包名也要求相同××××××××××××××××××××××××××××××××××××××××××××××××××××8