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

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、付费专栏及课程。

余额充值