参考链接

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<UserP> CREATOR=new Creator<UserP>() {
19         @Override
20         public UserP createFromParcel(Parcel source) {
21             return new UserP(source);
22         }
23
24         @Override
25         public UserP[] newArray(int size) {
26             return new UserP[size];
27         }
28     };
29
30
31     @Override
32     public int describeContents() {
33         return 0;
34     }
35
36     /*将数据写到Parce中*/
37     @Override
38     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

Parcelbale接口相关推荐

  1. 转 Java知识——精华总结

    一.java概述与基础知识 1.何为编程? 编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程.  为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路. ...

  2. 编程资料 -C# 多线程

    编程资料 - 多线程 C#多线程编程实例实战 作者: 刘弹 www.ASPCool.com 时间:2003-5-17 上午 10:24:05 阅读次数:10996 单个写入程序/多个阅读程序在.Net ...

  3. 编程资料 -C# 多线程 1

    编程资料 - 多线程 C#多线程编程实例实战 作者: 刘弹 www.ASPCool.com 时间:2003-5-17 上午 10:24:05 阅读次数:10996 单个写入程序/多个阅读程序在.Net ...

  4. 使用第三方SDK(如微信、qq、快看、头条等),调用接口405 Method Not Allowed

    使用第三方SDK(如微信.qq.快看.头条等),调用接口405 Method Not Allowed 错误描述:postman请求正常,但客户端调用后接口没有反应,但返回了405错误. 解决方法:第三 ...

  5. OpenFeign服务接口调用

    OpenFeign是什么? Feign是一个声明式的web服务客户端,让编写web服务客户端变得非常容易,只需创建一个接口并在接口上添加注解即可. OpenFeign能干什么? Feign和OpenF ...

  6. Go 学习笔记(71)— Go 接口 interface (接口定义、接口实现、接口调用、值接收者、指针接收者)

    1. 接口的定义 接口是和调用方的一种约定,它是一个高度抽象的类型,不用和具体的实现细节绑定在一起.接口要做的是定义好约定,告诉调用方自己可以做什么,但不用知道它的内部实现,这和我们见到的具体的类型如 ...

  7. Go 学习笔记(64)— Go error.New 创建接口错误对象、fmt.Errorf 创建接口错误对象、errors.Is 和 errors.As

    1. error 接口定义 除用 panic 引发中断性错误外,还可返回 error 类型错误对象来表示函数调用状态.error 接口是 Go 原生内置的类型,它的定义如下: // $GOROOT/s ...

  8. REST接口设计规范

    REST接口设计规范 (超级详细) RESTful API 设计指南 (阮一峰)

  9. 微机原理—定时计数控制接口

    别看题目很高深,其实就是很简单的定时器和计数器而已. 通常用手机定个闹钟,就是定时器的使用. 工厂里通过传送带上安装传感器,传感器传输给计算机的信号用来计数. 这是一些很简单的应用,通过很小的一个芯片 ...

最新文章

  1. python 翻译库_有没有大神用Python Requests库翻译一下呢?
  2. “示范性高中”害死人呐!
  3. oracle快速复制表数据
  4. springboot 多了8小时_日本人不明白:中国的奶茶有多好喝,值得排队8小时去买?...
  5. python基础学习--字符串和文件数据处理--附代码
  6. 像素,色彩,分辨率什么的
  7. Using #region Directive With JavaScript Files in Visual Studio 【转载】
  8. 饥荒服务器地图配置文件,饥荒联机版世界地图设置心得 联机全地图设置方法...
  9. 《矛盾论》与《实践论》
  10. 图书馆管理系统 Java
  11. 比arduino更简单易用的开发板ShineBlink,零代码上云,像搭积木一样开发物联网产品
  12. 只需一个损失函数,一个超参数即可压缩BERT,MSRA提模型压缩新方法
  13. 编程实现Z=5X+3Y+10,设已知变量和结果均放在数据段
  14. 张寓博当选山东省收藏者协会副主席兼美术评论委员会主任
  15. Java中WeakHashMap的应用场景
  16. 百度收录链接如何查询
  17. 制作映像(dmg)文件详细步骤
  18. 全基因组完整数据实战
  19. core data 介绍
  20. 学习日志(三):感知机

热门文章

  1. linux下mysql 启动命令
  2. linux——windows:上传、下载命令——rz,sz
  3. 关于进程与线程的讲解 最最最生动的理解
  4. Oracle中用于发送邮件的存储过程
  5. 在 SQL Server 的存储过程中调用 Web 服务
  6. swift学习笔记《5》- 实用
  7. kernel 3.2.0 上加入自己的板级文件
  8. 续《用最简单的例子实现jQuery图片即时上传》之多图上传实现
  9. oracle 由非归档到归档模式
  10. evernote 的美中不足