序列化手段(1)——parcel例子详解

本文通过实例展示了Android中Parcel类的使用,用于进程间通信(IPC)的数据交互。讲解了Parcel的基本方法如obtain(), dataSize(), dataCapacity(), writeXXX(), readXXX()等,并通过Android应用代码演示了如何写入和读取基本类型数据。Parcel对象的偏移量是关键,它随着读写操作而改变。最后提到,Parcel主要处理基本类型,对于对象序列化则通常使用Parcelable接口。" 89180441,8236076,txt文档数据处理与整合,"['文本处理', '数据计算', '文件操作', '文件系统']
摘要由CSDN通过智能技术生成
Parcel其翻译为“包袱”、“包裹”。在Android系统中Binder进程间通信(IPC)中经常使用到Parcel类对象来实现客户端和服务端的数据交互,而AIDL技术也是通过Parcel来实现交互。
查阅Android源码Parcel类,其中常用方法有
obtain() 获得一个新的parcel对象,相当于java中new一个对象
dataSize() 得到当前parcel对象的实际存储空间 
dataCapacity() 得到当前parcel对象的已分配的存储空间,该值大于或等于dataSize()返回值 。
dataPostion() 获得当前parcel对象的偏移量(类似于文件流指针的偏移量) 
setDataPosition() 设置偏移量(类似于移动指针到特定位置)
recyle() 清空并回收parcel对象所占内存
writeXXX()方法表示写于一个XXX类型的数
readXXX()方法表示读取一个XXX类型的数
比如:writeInt(int) 写入一个整数;readInt()读取一个整数。
值得注意的是,读取或写入特定类型的数之后会导致偏移量的变化,对于同一个parcel对象,偏移量是公用的。其以一个字节作为一个单位,假设去读一个32bit的float(java语言),则偏移量为4。
引用网友的一张图片
下面通过一个Android的小例子来认识这个类的使用
MainActivity类代码
package com.example.androidtest_parcel;

import android.os.Bundle;
import android.os.Parcel;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity implements OnClickListener{
	
	private Button mWI,mWF,MWD;
	private Button mRI,mRF,mRD;
	private TextView mTextView1;
	private EditText mEdit;
	private Parcel mParcel;
	private int p
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值