之前遇到过几次需要传递对象的程序,但是但是都没有直接去解决,今天又碰见了,就看了下,发现现在有俩种方式可以进行对象传递:
Serializable is a standard Java interface. You simply mark a class Serializable by implenting the interface, and Java will automatically serialize it in certain situations.
Parcelable is an Android specific interface where you implement the serialization yourself. It was created to be far more efficient that Serializable, and to get around some problems with the default Java serialization scheme.
对于Serializable 自己使用即可。例如:
public class InfoB implements Serializable{
/**
*serialVersionUID
*/
private static final long serialVersionUID = 1L;
String testaString = "aaaa";
String testbString = "bbbb";
/**
* Retrieve the testaString.
*
* @return the testaString
*/
public String getTestaString() {
return testaString;
}
/**
* Set the value of testaString.
*
* @param testaString
* the testaString to set
*/
public void setTestaString(String testaString) {
this.testaString = testaString;
}
/**
* Retrieve the testbString.
*
* @return the testbString
*/
public String getTestbString() {
return testbString;
}
/**
* Set the value of testbString.
*
* @param testbString
* the testbString to set
*/
public void setTestbString(String testbString) {
this.testbString = testbString;
}
}
对于Parcelable
我们需要实现俩个借口,例子如下:
public class Info implements Parcelable {
String testaString = "aaaa";
String testbString = "bbbb";
/**
* Retrieve the testaString.
*
* @return the testaString
*/
public String getTestaString() {
return testaString;
}
/**
* Set the value of testaString.
*
* @param testaString
* the testaString to set
*/
public void setTestaString(String testaString) {
this.testaString = testaString;
}
/**
* Retrieve the testbString.
*
* @return the testbString
*/
public String getTestbString() {
return testbString;
}
/**
* Set the value of testbString.
*
* @param testbString
* the testbString to set
*/
public void setTestbString(String testbString) {
this.testbString = testbString;
}
@Override
public int describeContents() {
return 0;
}
public static final Parcelable.Creator<Info> CREATOR = new Creator<Info>() {
@Override
public Info createFromParcel(Parcel source) {
final Info mBook = new Info();
mBook.testaString = source.readString();
mBook.testbString = source.readString();
return mBook;
}
@Override
public Info[] newArray(int size) {
return new Info[size];
}
};
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(testaString);
dest.writeString(testbString);
}
}