博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Parcelbale接口
阅读量:6590 次
发布时间:2019-06-24

本文共 1735 字,大约阅读时间需要 5 分钟。

Parcelable接口相对Serializable接口比较复杂,但是有一套模板代码可以参考,所有的实现Parcelable接口的类都跟模板代码类似。

1 package com.example.murphy.helloworld; 2  3 import android.app.Person; 4 import android.os.Parcel; 5 import android.os.Parcelable; 6  7 public class UserP implements Parcelable { 8     private String account; 9     private String password;10 11     //创建私有构造器,供CREATOR使用,从Parce回复数据12     private UserP(Parcel in) {13         account = in.readString();14         password = in.readString();15     }16 17     //用来恢复自定义对象18     public static final Creator
CREATOR=new Creator
() {19 @Override20 public UserP createFromParcel(Parcel source) {21 return new UserP(source);22 }23 24 @Override25 public UserP[] newArray(int size) {26 return new UserP[size];27 }28 };29 30 31 @Override32 public int describeContents() {33 return 0;34 }35 36 /*将数据写到Parce中*/37 @Override38 public void writeToParcel(Parcel dest, int flags) {39 dest.writeString(password);40 dest.writeString(account);41 }42 }

 序列化之后可使用Bundle的putParcelable的方法,将实现Parcelable接口的对象放进bundle打包进Intent然后传送。

序列化功能由writeToParcel来完成,最终是通过Parcel中的一系列write方法来完成的;反序列化功能由CREATOR来完成,其内部表明了如何创建序列化对象和数据,并通过Parcel的一系列read方法来完成反序列化的过程;内容描述功能由describeContents方法来完成,几乎在所有情况下这个方法都是返回0,仅当当前对象中存在文件描述符时,此方法返回1.需要注意的是,由于person是另一个可序列化对象,所以它的反序列化过程需要传递当前线程的上下文类加载器,否则会报无法找到类的错误。
 
Serializable和Parcelable选择哪个?

Serializable是Java中的序列化接口,其使用起来简单但是开销很大,序列化和反序列化过程需要大量I\O操作。而Parcelable是Android中序列化方式,因此更适合用在Android平台上,它的缺点是使用起来稍微复杂一点,但是因为有一套模板,所以这点复杂还是可以接受的,而且它的效率很高,这也是Android推荐的序列化方式,因此在Android平台上首选Parcelable。

转载于:https://www.cnblogs.com/woyaodangxueba/p/10480595.html

你可能感兴趣的文章
asp.net mvc文件下载
查看>>
VS2005 制作安装程序
查看>>
Pest Control &gain RS3gold rs3 cheap gold with $10
查看>>
caj文件怎么转换成word文档
查看>>
Flink状态管理和容错机制介绍
查看>>
IT必备网络基础知识
查看>>
ECS Linux开启swap(虚拟内存)
查看>>
tomcat catalina.out切割脚本
查看>>
我的友情链接
查看>>
windows下删除过期的文件
查看>>
Chapter 18 Packages
查看>>
openstack 概述(一部分)
查看>>
ACL应用
查看>>
centos6 及Redhalt yum源更新
查看>>
linux 调优记录
查看>>
客户端是如何判断是否带jsessionid去服务端呢
查看>>
气质是装不出来的
查看>>
Apache支持.htaccess以及“No input file specified” 和“ 重新载入页面以获取源代码”错误信息解决方案...
查看>>
盗版升级win10仍是盗版
查看>>
6月我国域名总量新增近10.8万个 环比减少2.9%
查看>>