首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

android Parcelable编写类对象

Android中的Parcelable是一种序列化机制,用于在不同组件之间传递自定义类对象。它比Java中的Serializable更高效,因为它是针对Android平台进行了优化的。

Parcelable接口是Android SDK提供的一个接口,要实现Parcelable,需要以下几个步骤:

  1. 在类中实现Parcelable接口,并实现以下方法:
    • writeToParcel(Parcel dest, int flags):将对象的数据写入Parcel对象中。
    • describeContents():返回当前对象的内容描述,一般返回0即可。
  • 在类中添加一个名为CREATOR的静态字段,并实现Parcelable.Creator接口。这个接口有两个方法:
    • createFromParcel(Parcel source):从Parcel对象中创建类的实例。
    • newArray(int size):创建一个指定大小的类对象数组。

下面是一个示例代码:

代码语言:txt
复制
public class MyClass implements Parcelable {
    private String name;
    private int age;

    // 构造方法
    public MyClass(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // 实现Parcelable接口的方法
    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(name);
        dest.writeInt(age);
    }

    @Override
    public int describeContents() {
        return 0;
    }

    // 实现Parcelable.Creator接口的方法
    public static final Parcelable.Creator<MyClass> CREATOR = new Parcelable.Creator<MyClass>() {
        @Override
        public MyClass createFromParcel(Parcel source) {
            return new MyClass(source);
        }

        @Override
        public MyClass[] newArray(int size) {
            return new MyClass[size];
        }
    };

    // 从Parcel对象中读取数据并构造类的实例
    private MyClass(Parcel in) {
        name = in.readString();
        age = in.readInt();
    }

    // 其他方法和属性
    // ...
}

使用Parcelable传递自定义类对象时,可以通过Intent的putExtra()方法来传递,或者通过Bundle对象来传递。例如:

代码语言:txt
复制
MyClass myObject = new MyClass("John", 25);
Intent intent = new Intent(this, AnotherActivity.class);
intent.putExtra("myObject", myObject);
startActivity(intent);

在接收端的Activity中,可以通过getParcelableExtra()方法获取传递过来的自定义类对象。例如:

代码语言:txt
复制
MyClass myObject = getIntent().getParcelableExtra("myObject");

推荐的腾讯云相关产品:腾讯云移动开发平台(https://cloud.tencent.com/product/mmp)

以上是关于Android Parcelable编写类对象的完善且全面的答案。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android Parcelable

Paracelable是android自己的实现序列化的接口,是anroid推荐使用的.那么什么事序列化呢?...再次之前我都是使用Serializable,虽然知道了Paracelable,但还是使用Serializable,理由就是简单,只需要extends 该接口即可。...第一步:首先写一个User实现Parcelable接口。我们这里先列举User常用类型int ,String ,boolean; ?...下面来说一下对象和集合的序列化。我们在之前的user中,再添加个对象和集合,如图: ? 如果实现Parcelable接口的对象中包含对象或者集合,那么其中的对象也要实现Parcelable接口 ....,也就是我们的Author要实现Parcelable接口: ? 跟User是一样的,没啥说的。 先看添加了集合和对象已经对象集合跟之前User的构造方法中的变化: ?

57730

androidParcelable介绍

image.png Parcelable Parcelable的概述在SDK中是这样的:这些的接口可以将实例写入或从中还原 Parcel。...简单的说ParcelableAndroid为我们提供的序列化的接口。 类似java的Serializable。...概括性来说序列化是指将对象实例的状态存储到存储媒体(磁盘或者其他介质)的过程。在此过程中,先将对象的公共字段和私有字段以及的名称(包括所在的程序集)转换为字节流,然后再把数据流字节流写入。...使用实例 进行Android开发的时候,无法将对象的引用传给Activities或者Fragments,我们需要将这些对象放到一个Intent或者Bundle里面,然后再传递。...package com.status.mattest; import android.os.Parcel; import android.os.Parcelable; public class Book

61420

AndroidParcelable的使用详解

Parcelable与Serializable Serializable是Java为我们提供的一个标准化的序列化接口。 ParcelableAndroid为我们提供的序列化的接口。...简单使用: 进行Android开发的时候,无法将对象的引用传给Activities或者Fragments,我们需要将这些对象放到一个Intent或者Bundle里面,然后再传递。...简单看一下: 1、定义Book,实现Parcelable接口。...package com.status.mattest; import android.os.Parcel; import android.os.Parcelable; public class Book...——————————————————————————– Book里面有其它对象: 如果Book里面有其他对象(比如实体Data)的话,那么Data也需要实现Parcelable接口,用法与上面的Book

1.7K50

Android 序列化 Serializable与Parcelable

实现Parcelable接口 由于Serializable在内存序列化上开销比较大,而内存资源属于android系统中的稀有资源(android系统分配给每个应用的内存开销都是有限的),为此android...而AndroidParcelable的设计初衷是由于Serializable效率过低,消耗大,而android中数据传递主要是在内存环境中(内存属于android中的稀有资源),因此Parcelable...所以Android应用程序在内存间数据传输时推荐使用Parcelable,如activity间传输数据和AIDL数据传递。...AndroidStudio中的快捷生成方式 (1)AndroidStudio快捷生成Parcelable代码 android studio 提供了自动实现Parcelable接口的方法的插件,相当实现,...我们只需要打开Setting,找到plugin插件,然后搜索Parcelable插件,最后找到android Parcelable code generator 安装即可。

1.9K60

Android Activity间传值选择,Serializable Or Parcelable

我们知道,像int,long,double等基本类型和String都可以直接使用Intent提供的putExtra方法直接打包传递,但很多时候,我们要传递的可能是一个实体对象,要传递一个实体对象...而ParcelableAndroid提供的接口,它主要是通过writeToParcel(),将需要持久化的字段保存到一个Parcel对象里面,然后通过CREATOR ?...从Parcel对象中,取出相应的字段,完成对象的恢复,很明显这里Parcelable有它的优势,需要保存哪些字段我们可以自由控制,因为写接口暴露给我们了,需要恢复哪些字段,我们同样可以控制,所以相对于Serializable...接收对象也很简单 ? 我们再来使用Parcelable接口来传递,先定义一个ParcelableGood ? 发送数据也很简单 ? 接收也同样类似 ?...最后我们来做一个总结,上面已经介绍了在Android开发中Serializable和Parcelable的用法,我们推荐使用Parcelable,理由大致有3个:1.ParcelableAndroid

1.2K30

Android项目实战(十九):Android Studio 优秀插件: Parcelable Code Generator                       Android Studi

Android Studio 优秀插件系列: Android Studio 优秀插件(一):GsonFormat Android Studio 优秀插件(二): Parcelable Code Generator...,用于序列化对象的一个接口 不清楚的可以看一下这篇博客:Intent传递对象的两种方法 ---------------------------------------------------------...-------------------- 这里假设我们已经会使用 Parcelable 序列化一个对象了~~ 那么大家会发现 Parcelable 使用起来有些复杂,因为我们要自己复写 几个方法,而且当的属性比较多的时候...那么因为 Parcelable 有使用它的优势,我们又不能放弃,那该怎么办么? Android Studio 提供给了我们 一个插件用来简化 给一个 实现 Parcelable 接口的流程。...4、完成了上面三个步骤,就可以使用Parcelable Code Generator插件了 怎么用呢, (1)创建一个文件,名是看你需求自定义写的,添加上你需要的属性 (2)快捷键 alt+insert

1.2K80

Android 进阶7:进程通信之 AIDL 的使用

Android 上,一个进程通常无法访问另一个进程的内存。 尽管如此,进程需要将其对象分解成操作系统能够识别的原语,并将对象编组成跨越边界的对象。...其他 AIDL 生成的接口 实现 Parcelable 的实体 AIDL 如何编写 AIDL 的编写主要为以下三部分: 创建 AIDL 创建要操作的实体,实现 Parcelable 接口,以便序列化...() 调用 AIDL 中定义好的操作请求 AIDL 实例 下面以实例代码演示一个 AIDL 的编写。...android.os.Parcel; import android.os.Parcelable; public class Person implements Parcelable { private...关于 Parcelable 可以看我的这篇文章 Android 进阶6:两种序列化方式 Serializable 和 Parcelable。 注意 实体所在的包名。

1K80

【Binder 机制】AIDL 分析 ( 创建 AIDL 文件 | 创建 Parcelable | AIDL 中使用 Parcelable | 编译工程生成 AIDL 对应的Java源文件 )

文章目录 一、创建 AIDL 文件 1、创建 AIDL 目录 2、创建 AIDL 文件 3、创建 Parcelable 4、AIDL 目录下声明 Parcelable 5、AIDL 中使用 Parcelable... 创建 Parcelable : package kim.hsl.aidl_demo; import android.os.Parcel; import android.os.Parcelable... 在 aidl 目录下声明 Parcelable : 在 aidl 目录下创建 Student.aidl 文件 , 然后声明如下内容 ; package kim.hsl.aidl_demo;...parcelable Student; 5、AIDL 中使用 Parcelable 在创建的 AIDL 接口中使用 Student : ① 首先要导入 Student , import kim.hsl.aidl_demo.Student...=null)) { reply.writeInt(1); _arg0.writeToParcel(reply, android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE

80820

Android中的序列化:Parcelable和Serializable

概述 序列化:将一个对象转换成 可存储或 可传输的状态。...Parcelable和Serializable的区别 作用 Serializable的作用是为了保存对象的属性到本地文件、数据库、网络流、rmi以方便数据传输,当然这种传输可以是程序内的也可以是两个程序间的...Parcelable的设计初衷是因为Serializable效率过慢,为了在程序内不同组件间以及不同Android程序间(AIDL)高效的传输数据而设计,这些数据仅在内存中存在,Parcelable是通过...,所以在需要保存或网络传输数据时选择Serializable,因为Android不同版本Parcelable可能不同,所以不推荐使用Parcelable进行数据持久化。.../reference/java/io/Serializable https://developer.android.com/reference/android/os/Parcelable https:/

70810

Android开发(54) AIDL示例

它支持实体,必须是实现了Parcelable接口,支持序列化。 AIDL通过服务绑定的方式来使用。你需要定义一个service,传递一个 IBinder对象。...步骤说明 服务端开发步骤如下: 1.定义一个AIDL文件 2.实现描述的接口,编写service 3.如果有实体,需要提供实体(jar包形式) 客户端 1.拿到AIDL文件 2.绑定服务,获得接口持有对象...如果你的aidl描述文件编写无误的话,android studio 会自动帮你生成一些辅助,你可以在下面的目录找到: build/generated/source/debug 在这个文件夹下回自动生成有...我们需要在src/java文件夹编写这么一个的实现,必须实现parcelable接口。 注意我们要先建立package,这个 package要和aidl接口声明里的一致。...android studio为我们方便的提供自动生成parcelable实现的快捷键,在mac下是 command+空格。

1.1K00

Android Studio中Parcelable插件的简单使用教程

Android Studio中,你可以很快速的使用Parcelable插件进行实体的序列化的实现,使用该插件后,你的实体可以快速的实现Parcelable接口而不用写额外的代码。...首先需要下载该插件: 在File- Setting- Plugins里的搜索框内输入内容:android parcelable code generator,然后自己下载好重启studio即可使用该插件了...点击右键弹出提示框,选择Parcelable生成即可: ? 序列化时选择需要的属性: ? 最后是自动生成的代码,也表示成功的实现了Parcelable接口: ? 怎么样?...是不是很高效就实现了Parcelable接口! 哦对了,使用该插件需要你先自己准备好实体的属性。...以上这篇在Android Studio中Parcelable插件的简单使用教程就是小编分享给大家的全部内容了,希望能给大家一个参考。

3.4K20

Android序列化总结

,那么该对象就需要实现序列化操作,在java中可以使用Serializable接口实现对象的序列化,而在android中既可以使用Serializable接口实现对象序列化也可以使用Parcelable...Parcelable 鉴于Serializable在内存序列化上开销比较大,而内存资源属于android系统中的稀有资源(android系统分配给每个应用的内存开销都是有限的),为此android中提供了...,当然Bundle本身也是一个类似键值对的容器,也可存储Parcelable实现,其API方法跟Intent基本相似,由于这些属于android基础知识点,这里我们就不过多介绍了。...而AndroidParcelable的设计初衷是由于Serializable效率过低,消耗大,而android中数据传递主要是在内存环境中(内存属于android中的稀有资源),因此Parcelable...接口,就得去编写一次重复的代码,这显然是不可取的,不过幸运的是,android studio 提供了自动实现Parcelable接口的方法的插件,相当实现,我们只需要打开Setting,找到plugin

76120

Android序列化之Parcelable和Serializable的使用详解

实现序列化的必要条件 一个对象要实现序列化操作,该类就必须实现了Serializable接口或者Parcelable接口,其中Serializable接口是在java中的序列化抽象,而Parcelable...接口则是android中特有的序列化接口,在某些情况下,Parcelable接口实现的序列化更为高效,关于它们的实现案例我们后续会分析,这里只要清楚知道实现序列化操作时必须实现Serializable接口或者...Parcelable和Serializable是两个接口,它们的作用是让实现了其中一个接口的对象能够被序列化和反序列化。...使用场景:将对象持久化到存储介质或者通过网络传输。 (2)Parcelable接口是Android平台下的序列化接口,通常跨进程传递的数据都要正确实现这个接口,比如Intent,Bitmap等。...2.自定义一个让其实现Parcelable,大致流程是什么? (1)首先实现Parcelable接口,并实现接口中的方法。

1.5K10
领券