您的位置:首页 > 大数据 > 人工智能

远端绑定Service第一篇之AIDL进程间通信

2015-11-06 20:14 344 查看

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: