1
나는 Parcelable을 구현하는 클래스가 있습니다. 클래스는 1 int와 2 String을가집니다. 읽기 전용 인 경우 int 데이터가 반환됩니다. 첫 번째 문자열은 ""로 반환되고 두 번째 문자열은 null로 반환됩니다.읽을 수있는 개체에서 문자열을 읽음.
쓰기 소포 -
After writing int - data position 376 parcel size 376.
After writing String1 - data position 392 parcel size 392.
After writing String2 - data position 412 parcel size 412.
읽기 소포 -
After reading int - data position 112 parcel size 152.
After reading String1 - data position 120 parcel size 152.
After reading String2 - data position 124 parcel size 152.
데이터 크기는 소포 데이터를 읽는 동안 동일해야 하는가? Parcelable을 구현
클래스 -
public class Message implements Parcelable {
private long id;
private String from;
private String message;
private String TAG = Message.class.getSimpleName();
public static final Parcelable.Creator<Message> CREATOR = new Parcelable.Creator<Message>() {
@Override
public Message createFromParcel(Parcel source) {
return new Message(source);
}
@Override
public Message[] newArray(int size) {
Log.v("Message", "New array size " + size);
return new Message[size];
}
};
public Message(){
}
private Message(Parcel source){
id = source.readInt();
Log.v(TAG, "Reading parcel object data position " + source.dataPosition() + " parcel size " + source.dataSize());
from = source.readString();
Log.v(TAG, "Reading parcel object data position " + source.dataPosition() + " parcel size " + source.dataSize());
message = source.readString();
Log.v(TAG, "Reading parcel object data position " + source.dataPosition() + " parcel size " + source.dataSize());
}
/**
* @return the id
*/
public long getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(long id) {
this.id = id;
}
/**
* @return the from
*/
public String getFrom() {
return from;
}
/**
* @param from the from to set
*/
public void setFrom(String from) {
this.from = from;
}
/**
* @return the message
*/
public String getMessage() {
return message;
}
/**
* @param message the message to set
*/
public void setMessage(String message) {
this.message = message;
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "Message [id=" + id + ", from=" + from + ", message=" + message
+ "]";
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
Log.v(TAG, "Writing parcel object " + flags + " -- " + id + " -- " + from + " -- " + message);
dest.writeLong(id);
Log.v(TAG, "Writing parcel object data position " + dest.dataPosition() + " parcel size " + dest.dataSize());
/*dest.writeString(from);
dest.writeString(message);*/
dest.writeString("from");
Log.v(TAG, "Writing parcel object data position " + dest.dataPosition() + " parcel size " + dest.dataSize());
dest.writeString("message");
Log.v(TAG, "Writing parcel object data position " + dest.dataPosition() + " parcel size " + dest.dataSize());
}
}
일부 코드는 귀하의 소구문 및 읽기/쓰기가 유용 할 수 있습니다. – sandrstar
@sandrstar - 질문을 수정하여 코드를 포함 시켰습니다. – Salil