Parcelable的使用

Parcelable的使用一 Parcelable 的基本介绍 Parcelable 是 Android 为我们提供的序列化接口 一个类只要实现了这个接口 这个类的对象就可以实现序列化 可用于 IPC Binder Activity 之间的对象的传递 二 Parcelable 的基本使用 1 创建一个类实现 Parcelable 接口 2 实现接口中的 describeCont 和 writeToParce Parcel

一、Parcelable的基本介绍

Parcelable是Android为我们提供的序列化接口。一个类只要实现了这个接口,这个类的对象就可以实现序列化。可用于IPC/Binder,Activity之间的对象的传递。

二、Parcelable的基本使用

1、创建一个类实现Parcelable接口

2、实现接口中的describeContents()和writeToParcel(Parcel dest, int flags)方法

3、在类的实现中必须包含一个非空的静态实现了Parcelable.Creator接口的CREATOR。

示例如下:

public class User implements Parcelable { private String name; private int age; public User(String name, int age) { this.name = name; this.age = age; } //此处读的顺序要和 writeToParcel(Parcel dest, int flags)的写入顺序保持一致,否则会导致读取的数据出错 private User(Parcel in) { name = in.readString(); age = in.readInt(); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(name); dest.writeInt(age); } public static final Parcelable.Creator 
 
   CREATOR = new Parcelable.Creator 
  
    () { @Override public User createFromParcel(Parcel source) { return new User(source); } @Override public User[] newArray(int size) { return new User[size]; } }; } 
   
 

三、Parcelable中方法的介绍

1、describeContents()

返回当前对象的内容描述。返回值为0或者CONTENTS_FILE_DESCRIPTOR(即1),如果writeToParcel(Parcel dest, int flags)的输出包含文件描述符,则返回1,否则返回0,几乎所有的情况之下都是返回0.

2、writeToParcel (Parcel dest, int flags)

将当前的对象写入序列化结构中,dest表示需要写入序列化的对象。flags有两种值0和PARCELABLE_WRITE_RETURN_VALUE(即1),几乎所有的情况下都是0.

3、createFromParcel(Parcel source)

返回Parcelable类的新实例。同Parcel的readXXX()方法来完成反序列化的过程。

4、newArray(int size)

创建Parcelable类的新数组。其中每个条目都初始化为空。供外部类反序列化本类数组使用。

注意:如果在该类的内部包含有里一个可序列化的对象,则该对象的的反序列化过程需要传递当前线程的上下文类加载器。否则会返回BadParcelableException错误。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/218750.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午11:33
下一篇 2026年3月17日 下午11:34


相关推荐

  • chunked java_java – 如何正确使用ChunkedStream

    chunked java_java – 如何正确使用ChunkedStream这是我的用例 我有一个上游服务 通过网络发送我的 Netty 应用程序数据 并且该数据需要发布到连接到 Netty 的多个客户端 推送到客户端的数据必须是 HTTP Transfer Encoding chunked 我找到了 ChunkedStrea 虽然也许我可以创建一个 PipedInputSt 和一个 PipedOutputS 连接到 PipedInputSt 并将 Chunked

    2026年3月17日
    2
  • JVM垃圾回收机制

    JVM垃圾回收机制

    2021年11月12日
    41
  • 零基础学Java(13)方法参数[通俗易懂]

    零基础学Java(13)方法参数[通俗易懂]前言首先回顾一下在程序设计语言中关于如何将参数传递给方法的一些专业术语。按值调用表示方法接收的是调用者提供的值。而按引调用表示方法接收的是调用者提供的变量地址。方法可以修改按引用传递的变量的值,而不

    2022年8月7日
    14
  • 事件节流函数封装层

    事件节流函数封装层

    2021年9月14日
    54
  • 如何使用Cursor导入VSCode插件

    如何使用Cursor导入VSCode插件

    2026年3月16日
    3
  • 绘图软件Origin新手使用教程「建议收藏」

    绘图软件Origin新手使用教程「建议收藏」*写在前面:本文为便于博主自己学习进行的摘录整理,由于经过实际软件操作验证,故投稿原创,主要来源为知乎*绘图软件Origin使用教程一、新手绘制新图(1)创建新图1.新建图2.文字输入3.绘制箭头4.新建图表选择(2)绘图实例讲解1.创建工程2.将数据导入book3.创建空的graph,设置画布尺寸4.添加坐标系,设置坐标系的位置与尺寸5.添加图线6.设置坐标轴格式7.设置图的标题8.设置图线的格式9.设置并添加图例10.导出图片二、导入数据(1)支持导入的数据格式1.主要介绍2.导入数据3.数据格式转

    2022年5月31日
    563

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号