parcel.writeXXX(),每寫一次資料,在32bit的空間裡能夠儲存要放入的變數,怎只佔一個位移量,也就之一動4個位置,而當儲存的資料如 parcel.writeFloat(1000000000000000000000000000000000000f);他就自動往後移動,
parcel.writeString("a");
parcel.writeString("b");
parcel.writeString("d");
parcel.writeString("c");
和
parcel.writeString("abcd"); 的區別。有此可見,他的記憶體的分配原來是這樣的。
那我怎樣才能把我存進去的書據依次的去出來呢?setDataPosition(),設定parcel 的位移量,在readXXX(),讀取資料
int size = parcel.dataSize();
int i = 0;
while (i <= size ) {
parcel.setDataPosition(i);
int curr_int = parcel.readInt();
i+=4;
int j = 0;
j++;
}
由此可見parcel 寫入資料是按照32bit 為基本的容器,依次儲存寫入的資料,基本和引用(其實引用的也是有多個基礎資料型別 (Elementary Data Type)組合而成OBJECTS-屬性|方法),讀取的時候我們就可以按照這種規律根據目標資料的位移量的位置(curr_position),以及位移量的大小(size),,取出已經存進去的資料了
int i = curr_position;
while (i <= size ) {
parcel.setDataPosition(i);
int curr_int = parcel.readXXXt();
i+=4;
int j = 0;
j++;
}
這樣就ok 了
他的createXXX()方法現在沒用,用了在說吧!
總結一句話,java 中 基礎資料型別 (Elementary Data Type)的取值範圍,參考型別的資料,相當於c中的指標,以及各進位之間的相互轉換和靈活的引用,以及定製自己想要的任意進位資料類型。http://hi.baidu.com/anly_jun/blog/item/8ccbb8ad223afd024a36d645.html