上2篇文章搞懂了parcelable和AIDL的使用,而在AIDL中使用parcelable時,也是差不多的,不過,parcelable也要寫成AIDL檔案:
AIDL檔案如下:
packeage com.*parcelable com.*.person
這個檔案不會產生一個.java檔案,.java檔案需要自己編寫:
public class Person implements Parcelable{
private String name;
private int age;
private static final String TAG = "ParcelableTest.TAG";
public String getName() {
Log.d(TAG,"getName()");
return name;
}
public void setName(String name) {
Log.d(TAG,"setName(String name)");
this.name = name;
}
public int getAge() {
Log.d(TAG,"getAge()");
return age;
}
public void setAge(int age) {
Log.d(TAG,"setAge(int age)");
this.age = age;
}
public static final Parcelable.Creator<Person> CREATOR = new Creator<Person>() {
@Override
public Person createFromParcel(Parcel source) {
Log.d(TAG,"createFromParcel");
Person mPerson = new Person();
mPerson.name = source.readString();
mPerson.age = source.readInt();
return mPerson;
}
@Override
public Person[] newArray(int size) {
// TODO Auto-generated method stub
Log.d(TAG,"Person[] newArray(int size)");
return new Person[size];
}
};
@Override
public int describeContents() {
// TODO Auto-generated method stub
Log.d(TAG,"describeContents");
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
// TODO Auto-generated method stub
Log.d(TAG,"writeToParcel");
dest.writeString(name);
dest.writeInt(age);
}
Override是需要重寫的函數;然後就可以使用person作為一個類去定義要傳輸的對象了;
person.class和person.aidl都需要複製到用戶端。。。