前端时间项目运用到AIDL,关于AIDL客户端以及AIDL服务端网络上没有一个比较完备的Demo.
而参考Demo无疑是一个比较快速的学习方法.因此,我写了一个Demo.
供大家参考,也非常欢迎大家对其中写的不好的地方进行指正.
好了,首先简述下基本功能:
在AIDL 客户端三个EditText中输入三个值,点击提交按钮,将这三个值传入到AIDL服务端进行处理.
服务端处理后会执行客户端的回调函数:在AIDL客户端界面进行刷新,并显示一个toast.
接下来看看代码结构:
需要注意的是,两个工程中com.harlan.demo.aidl包内部的文件必须保持一致.
(1)HarlanInfo.java:这是包中唯一的一个java文件,是一个数据结构,该类实现了Parcelable接口
package com.harlan.demo.aidl;
import android.os.Parcel;
import android.os.Parcelable;
/**
*
* <一句话功能简述>
* Parcelable是Android特有的功能,效率比实现Serializable接口高
*
* @author Administrator
* @version [版本号, 2012-12-10]
* @see [相关类/方法]
* @since [产品/模块版本]
*/
public class HarlanInfo implements Parcelable
{
private String name;
private int age;
private String place;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
public String getPlace()
{
return place;
}
public void setPlace(String place)
{
this.place = place;
}
/**
* <默认构造函数>
*/
public HarlanInfo()
{
}
/**
* <默认构造函数>
*/
public HarlanInfo(Parcel in)
{
//注意顺序
name = in.readString();
age = in.readInt();
place = in.readString();
}
/**
* seems meaningless
* return 0;
*/
@Override
public int describeContents()
{
return 0;
}
/**
* 将对象序列化为一个Parcel对象
* 可以将Parcel看成是一个流,通过writeToParcel把对象写到流里面,
* 再通过createFromParcel从流里读取对象
* 注意:写的顺序和读的顺序必须一致。
*/
@Override
public void writeToParcel(Parcel dest, int flags)
{
dest.writeString(name);
dest.writeInt(age);
dest.writeString(place);
}
/**
* 实例化静态内部对象CREATOR实现接口Parcelable.Creator
* public static final一个都不能少,内部对象CREATOR的名称也不能改变,必须全部大写
*/
public static final Parcelable.Creator<HarlanI