国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android中Parcel用法詳解

2019-12-12 06:08:34
字體:
來源:轉載
供稿:網友

本文實例講述了Android中Parcel用法。分享給大家供大家參考,具體如下:

Android 中Parcel 的使用,他是一個存儲基本數據類型和引用數據類型的容器,在andorid 中通過IBinder來綁定數據在進程間傳遞數據。

Parcel parcel = Parcel.obtain();// 獲取一個Parcel 對象

下面就可以對其進行方法進行操作了,createXXX(),wirteXXX(),readXXX(),
其中dataPosition(),返回當前Parcel 當前對象存儲數據的偏移量,而setDataPosition(),設置當前Parcel 對象的偏移量,方便讀取parcel 中的數據,可問題就出在我讀取出來的數據要么是空(null),要么永遠是第一個偏移量處的值,存儲和讀取數據的。Parcel采用什么機制實現的,是以什么形式的存儲的,然后我才能任意對其操作,讀取目標數據。

基本數據類型的取值范圍:

boolean 1bit
short 16bit
int 32bit
long 64bit
float 32bit
double 64bit
char 16bit
byte 8bit

由此我可以猜想,Parcel 32bit 作為基本單位存儲寫入的變量,4byte*8=32bit,在內存中的引用地址變量是采用16進制進行編碼,且作為偏移量,即偏移量是4的倍數,0,4,8,12,16,20,24,28,32,36,40,44,48......4*N,

f(x) = 4*y{y>=0&y是自然數}

我想絕對不會出現向偏移量是3,6,9這樣的數據。。。

由此我們可以推斷出,無論他存儲的是基本數據類型或引用數據類型的變量,都是以32bit基本單位作為偏移量,

parcel.writeInt(1);parcel.writeInt(2);parcel.writeInt(3);parcel.writeInt(4);parcel.writeInt(5);parcel.writeInt(6);parcel.writeInt(7);parcel.writeInt(81011111);parcel.writeFloat(1f);parcel.writeFloat(1000000000000000000000000000000000000f);

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 為基本的容器,依次存儲寫入的數據,基本和引用(其實引用的也是有多個基本數據類型組合而成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 中 基本數據類型的取值范圍,引用類型的數據,相當于c中的指針,以及各進制之間的相互轉換和靈活的引用,以及定制自己想要的任意進制數據類型。

更多關于Android相關內容感興趣的讀者可查看本站專題:《Android數據庫操作技巧總結》、《Android編程之activity操作技巧總結》、《Android文件操作技巧匯總》、《Android編程開發之SD卡操作方法匯總》、《Android開發入門與進階教程》、《Android資源操作技巧匯總》、《Android視圖View技巧總結》及《Android控件用法總結

希望本文所述對大家Android程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 萍乡市| 桃江县| 平凉市| 木兰县| 乌拉特前旗| 平定县| 抚州市| 梁山县| 玉田县| 大英县| 来凤县| 根河市| 大理市| 和顺县| 石台县| 海南省| 金川县| 合山市| 阳城县| 郸城县| 韶山市| 洪湖市| 大石桥市| 台前县| 金山区| 治多县| 丰顺县| 镇赉县| 阿图什市| 宾川县| 双流县| 宜州市| 化隆| 尉氏县| 冕宁县| 铜川市| 九寨沟县| 桑植县| 胶南市| 沈丘县| 丽江市|