1.定义aidl文件——————AIDL进程间通信
1.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