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

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值