第一步:首先写一个User类实现Parcelable接口。我们这里先列举User类常用类型int ,String ,boolean; ?...根据上面过程的介绍,Parcelable就写完了,基本都是自动生成的,接下来就可以直接在Intent中传输了,可以自己写两个Activity传输一下数据试一下,其中一个putExtra另一getParcelableExtra...如果实现Parcelable接口的对象中包含对象或者集合,那么其中的对象也要实现Parcelable接口 .,也就是我们的Author要实现Parcelable接口: ?
parcelable = getIntent().getParcelableExtra(MainActivity.KEY); Person mPerson = (Person)parcelable...; // Parcelable -> Person Log.d(TAG, "parcelable=" + parcelable + "; mPerson=" + mPerson);...Log D/Parcelable( 487): MainActivity D/Parcelable( 487): onClick D/Parcelable( 487): mPerson=com.learn.Person...@40520b98 D/Parcelable( 487): writeToParcel(Parcel dest, int flags) D/Parcelable( 487): startActivity...D/Parcelable( 487): SubActivity D/Parcelable( 487): createFromParcel(Parcel source) D/Parcelable(
) { //Parcelable类型 writeInt(VAL_PARCELABLE); writeParcelable((Parcelable) v,...//获取对应Parcelable的Creator Parcelable.Creator<?...); } 先来看 Parcelable 的 CREATOR 的获取方式: public final Parcelable.Creator<?...Parcelable的Creator实例 HashMap<String, Parcelable.Creator<?...Parcelable 实例。
public class Book implements Parcelable { public int bookId; public String bookName; public...) { out.writeInt(bookId); out.writeString(bookName); } public static final Parcelable.Creator
image.png Parcelable Parcelable类的概述在SDK中是这样的:这些类的接口可以将实例写入或从中还原 Parcel。...简单的说Parcelable是Android为我们提供的序列化的接口。 类似java的Serializable类。...package com.status.mattest; import android.os.Parcel; import android.os.Parcelable; public class Book...implements Parcelable { private String name; private int id; private String classify;
Parcelable,定义了将数据写入Parcel,和从Parcel中读出的接口。一个实体(用类来表示),如果需要封装到消息中去,就必须实现这一接口,实现了这一接口,该实体就成为“可打包的”了。...接口的定义如下: public interface Parcelable { //内容描述接口,基本不用管 public int describeContents(); //写入接口函数...,打包 public void writeToParcel(Parcel dest, int flags); //读取接口,目的是要从Parcel中构造一个实现了Parcelable的类的实例处理...同时在消息的接收方需要通过MyMessage实现的Parcelable接口,将MyMessage重新构造出来。...import android.os.Parcel; import android.os.Parcelable; public class MyMessage implements Parcelable
Serializable和Parcelable, 都可以用来做序列化,网上也有很多文章分析它们的优缺点,大部分的结论都是Serializable使用简单但是低效,Parcelable使用麻烦但是高效,...第三个问题:Android中Parcelable的序列化是怎么实现的?...先来看一下,上面的Person类实现Parcelable接口 public class Person implements Parcelable { public int age; public...运行结果:Serializable平均每次写1000个对象的耗时大约30ms,Parcelable平均每次耗时大约4ms。...总结一下: 数据本地持久化,推荐Serializable 界面传值 推荐Parcelable 小彩蛋: 通过上面分析,Parcelable我们可以自由决定哪些字段参与序列化,那么Serializable
概述 生成实现了Parcelable接口的代码的插件 下载安装 1.在线安装 ?...输入 Android Parcelable code generator ,点击安装即可,安装之后 重启,会看到上图选中部分所示。...2.手动下载安装 https://github.com/mcharmas/android-parcelable-intellij-plugin 使用 在你的类中,按下alt + insert键弹出插入代码的上下文菜单...,会看到在下面有一个Parcelable,选择它之后,就会在你的类当中插入实现了Parcelable接口的代码了。...* @version 1.0 * @desc */ public class Product implements Parcelable { private int id; private
Android Parcelable接口使用方法详解 1....2.实现Parcelable就是为了进行序列化,那么,为什么要序列化?...4.选择序列化方法的原则 1)在使用内存的时候,Parcelable比Serializable性能高,所以推荐使用Parcelable。...3)Parcelable不能使用在要将数据存储在磁盘上的情况,因为Parcelable不能很好的保证数据的持续性在外界有变化的情况下。...复杂类型必须实现Parcelable接口。
在使用内存的时候,Parcelable 类比 Serializable 性能高,所以推荐使用 Parcelable 类。 (2)....而Parcelabel的实现,不仅需要实现Parcelabel接口,还需要在类中添加一个静态成员变量CREATOR,这个变量需要实现 Parcelable.Creator 接口,并实现读写的抽象方法。...='" + age + '\'' + '}'; } } 通过上述代码中,可知Serializable序列化 之需要实现Serializable接口即可,使用比较简单; **Parcelable...用法** public class User implements Parcelable { public int id; public String age; public String... CREATOR = new Parcelable.Creator() { @Override public User createFromParcel(Parcel
Parcelable与Serializable Serializable是Java为我们提供的一个标准化的序列化接口。 Parcelable是Android为我们提供的序列化的接口。...对比: 1、Parcelable相对于Serializable的使用相对复杂一些。 2、Parcelable的效率相对Serializable也高很多。...3、Parcelable不能使用在要将数据存储在磁盘上的情况,因为Parcelable在外界有变化的情况下不能很好的保证数据的持续性。...简单看一下: 1、定义Book类,实现Parcelable接口。...package com.status.mattest; import android.os.Parcel; import android.os.Parcelable; public class Book
以上就是自己对Serializable的认识,下边来看看Parcelable相关的知识!!...Parcelable 我们先看一个使用Parcelable进行序列化的例子: public class Book implements Parcelable { public int bookId...接口来实现序列化操作,在使用内存的时候,Parcelable比Serializable性能高,所以推荐使用Parcelable。...而Parcelable是Android中序列化方法,因为更适合于在Android平台上,它的缺点就是使用起来比较麻烦,但是它的效率很高,这是Android推荐的序列化方法,因为我们要首选Parcelable...Parcelable主要用于内存序列化上,通过Parcelable将对象序列化到存储设备中或者将对象序列化后通过网络传输也都是可以的,但是这个过程稍显复杂,因此在这两种情况下建议使用Serializable
中提供了Parcelable接口来实现序列化操作,Parcelable的性能比Serializable好,在内存开销方面较小,所以在内存间数据传输时推荐使用Parcelable,如通过Intent在activity...间传输数据,而Parcelable的缺点就使用起来比较麻烦,下面给出一个Parcelable接口的实现案例: class User implements Parcelable { String...Parcelable是直接在内存中读写,我们知道内存的读写速度肯定优于硬盘读写速度,所以Parcelable序列化方式性能上要优于Serializable方式很多。...AndroidStudio中的快捷生成方式 (1)AndroidStudio快捷生成Parcelable代码 android studio 提供了自动实现Parcelable接口的方法的插件,相当实现,...我们只需要打开Setting,找到plugin插件,然后搜索Parcelable插件,最后找到android Parcelable code generator 安装即可。
<Int ) : Parcelable 使用 Android Studio 自带的 Add Parcelable Implementation ,然后你就得到了。。。...of a type that implements the Parcelable.Creator interface....inline fun <reified T : Parcelable parcelableCreatorOf(): Parcelable.Creator<T = object : Parcelable.Creator...出现:BadParcelableException: Parcelable protocol requires a Parcelable.Creator… 在Kotlin编写代码过程中,需要用到parcelable...protocol requires a Parcelable.Creator...
我们再来使用Parcelable接口来传递,先定义一个类ParcelableGood ? 发送数据也很简单 ? 接收也同样类似 ?...因为Intent提供了putExtra方法直接传递Parcelable数组的重载,所以可以直接使用, ? 从Intent中取出Parcelable数组更简单 ? ...如果要使用Parcelable,GoodExtra同样要实现我们上面介绍的writeToParcel 和 CREATOR。 ...最后我们来做一个总结,上面已经介绍了在Android开发中Serializable和Parcelable的用法,我们推荐使用Parcelable,理由大致有3个:1.Parcelable是Android...Parcelable效率更高,Parcelable底层实现是内存的copy,速度很快,Serializable是IO操作,而且会用到反射,相对比较慢,国外有人测试过,Parcelable比Serializable
实现序列化的必要条件 一个对象要实现序列化操作,该类就必须实现了Serializable接口或者Parcelable接口,其中Serializable接口是在java中的序列化抽象类,而Parcelable...Parcelable接口之一即可。...Parcelable和Serializable是两个接口,它们的作用是让实现了其中一个接口的类的对象能够被序列化和反序列化。...Parcelable实现起来比Serializable复杂,但性能较好。使用场景:在内存中实现序列化,例如跨进程传递。...2.自定义一个类让其实现Parcelable,大致流程是什么? (1)首先实现Parcelable接口,并实现接口中的方法。
在Android Studio中,你可以很快速的使用Parcelable插件进行实体类的序列化的实现,使用该插件后,你的实体类可以快速的实现Parcelable接口而不用写额外的代码。...首先需要下载该插件: 在File- Setting- Plugins里的搜索框内输入内容:android parcelable code generator,然后自己下载好重启studio即可使用该插件了...点击右键弹出提示框,选择Parcelable生成即可: ? 序列化时选择需要的属性: ? 最后是自动生成的代码,也表示成功的实现了Parcelable接口: ? 怎么样?...是不是很高效就实现了Parcelable接口! 哦对了,使用该插件需要你先自己准备好实体类的属性。...以上这篇在Android Studio中Parcelable插件的简单使用教程就是小编分享给大家的全部内容了,希望能给大家一个参考。
Parcelable的设计初衷是因为Serializable效率过慢,为了在程序内不同组件间以及不同Android程序间(AIDL)高效的传输数据而设计,这些数据仅在内存中存在,Parcelable是通过...Parcelable差; Parcelable是以IBinder作为信息载体的。...在内存上的开销比较小,因此内存直接进行数据传递的时候,Android推荐使用Parcelable; 在读写数据的时候,Parcelable是在内存中直接进行读写,而Serializable是通过IO流的形式将数据写入到硬盘上...选择 Parcelable的性能比Serializable好,在内存开销方面较小,所以在内存间数据传输时推荐使用Parcelable,如Activity间传输数据,而Serializable可将数据持久化方便保存...,所以在需要保存或网络传输数据时选择Serializable,因为Android不同版本Parcelable可能不同,所以不推荐使用Parcelable进行数据持久化。
文章目录 一、创建 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...; public class Student implements Parcelable { private String name; public Student(String...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
在安卓开发中,我们在组件中传递数据时常常使用 Intent 传输数据时需要传递 Serializable 或者 Parcelable 的数据,比如 Intent.putExtra 方法: public...接口 Parcelable 是 Android 特有的序列化接口: public interface Parcelable { //writeToParcel() 方法中的参数,用于标识当前对象作为返回值返回...实现 Parcelable 接口的类必须有一个 CREATOR 类型的静态变量,下面是一个实例: public class ParcelableGroupBean implements Parcelable...而在运行时数据传递时建议使用 Parcelable,比如 Intent,Bundle 等,Android 底层做了优化处理,效率很高。...Thanks 《Android 开发艺术探索》 http://developer.android.com/reference/android/os/Parcelable.html
领取专属 10元无门槛券
手把手带您无忧上云