`

Serializable 和 Parcelable 区别

 
阅读更多

android 中自定义的对象序列化的问题有两个选择一个是Parcelable,另外一个是Serializable。

一 序列化原因:

1.永久性保存对象,保存对象的字节序列到本地文件中;
2.通过序列化对象在网络中传递对象;
3.通过序列化在进程间传递对象。 

二 至于选取哪种可参考下面的原则:

1.在使用内存的时候,Parcelable 类比Serializable性能高,所以推荐使用Parcelable类。
2.Serializable在序列化的时候会产生大量的临时变量,从而引起频繁的GC。
3.Parcelable不能使用在要将数据存储在磁盘上的情况,因为Parcelable不能很好的保证数据的持续性在外界有变化的情况下。尽管Serializable效率低点, 也不提倡用,但在这种情况下,还是建议你用Serializable 。


实现:
1 Serializable 的实现,只需要继承  implements Serializable 即可。这只是给对象打了一个标记,系统会自动将其序列化。

2 Parcelabel 的实现,需要在类中添加一个静态成员变量 CREATOR,这个变量需要继承 Parcelable.Creator 接口。
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->public class MyParcelable implements Parcelable {
     
private int mData;

     
public int describeContents() {
         
return 0;
     }

     
public void writeToParcel(Parcel out, int flags) {
         out.writeInt(mData);
     }

     
public static final Parcelable.Creator<MyParcelable> CREATOR
             
= new Parcelable.Creator<MyParcelable>() {
         
public MyParcelable createFromParcel(Parcel in) {
             
return new MyParcelable(in);
         }

         
public MyParcelable[] newArray(int size) {
             
return new MyParcelable[size];
         }
     };
     
     
private MyParcelable(Parcel in) {
         mData 
= in.readInt();
     }
 }

 转载至:http://www.blogjava.net/lincode/archive/2011/09/16/358805.html
分享到:
评论

相关推荐

    Android序列化——Serializable与Parcelable

    本文将深入探讨两种主要的序列化方式:Serializable和Parcelable,并比较它们的优缺点以及适用场景。 首先,我们来了解什么是序列化。序列化是将对象的状态转换为可存储或可传输的形式的过程。在Android中,这个...

    Android 数据传递(Intent、Bundle、Serializable、Parcelable等)

    数据通过Intent.putExtra()方法添加,支持基本数据类型(如字符串、整型、浮点型)以及Parcelable和Serializable对象。当Intent传递的数据量较小或不涉及复杂对象时,Intent是非常方便的选择。 2. **Bundle**: ...

    android中Intent传递对象的两种方法(Serializable,Parcelable)

    当我们需要在Intent中传递复杂对象时,有两种主要的方法:Serializable和Parcelable。这两种方式都可以实现对象的序列化,但它们在性能和效率上存在差异。 **Serializable接口** Serializable接口是Java提供的一个...

    Intent传递对象之Serializable和Parcelable的区别

    大家都知道在intent传递对象的方法有两种:1、实现Serializable接口、2、实现Parcelable接口,接下来通过本文给大家介绍Intent传递对象之Serializable和Parcelable的区别,感兴趣的朋友一起学习吧

    Java Serializable和Parcelable详解及实例代码

    本篇将详细讲解两种常见的序列化方式:Serializable和Parcelable,并通过实例代码来加深理解。 1. **Serializable接口** `Serializable` 是Java标准库提供的一种简单的序列化方式,位于`java.io`包下。任何实现了`...

    Android中Intent传递对象的两种方法(Serializable,Parcelable)

    Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);...当然这些Object是有一定的条件的,前者是实现了Serializable接口,而后者是实现了Parcelable接口。

    Android面试专题(七):Serializable 和 Parcelable 的区别

    面试官:“说一下Serializable接口和Parcelable接口的区别吧。” 我们可以从以下两方面来说一说~ 首先我们先给两者来个简单的介绍: 1.定义 Serializable(Java自带): Serializable是序列化的意思,表示将一个对象...

    Android中Serializable和Parcelable序列化对象详解

    本文主要探讨两种序列化方式:Serializable和Parcelable。 1. **序列化的目的** - **永久保存对象数据**:通过序列化,对象的状态可以被保存到文件或数据库中,即使应用关闭后,仍能恢复这些状态。 - **网络传输*...

    Android中Intent传递对象的两种方法Serializable,Parcelable

    二者的使用场景和区别: 1)在使用内存的时候,Parcelable比Serializable性能高,所以推荐使用Parcelable。 2)Serializable在序列化的时候会产生大量的临时变量,从而引起频繁的GC。 3)Parcelable不能使用在要将...

    Android Intent传递对象的两种方法(Serializable,Parcelable)详细介绍

    Android Intent传递对象的两种方法(Serializable,Parcelable)详细介绍 今天要给大家讲一下Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);另一种是Bundle....

    Android通过Parcelable和Serializable实现各种类型嵌套序列化

    Android提供了两种主要的序列化方式:Parcelable和Serializable。这两种方式都可以将对象转换为字节流,便于存储、传输或恢复。下面将详细讨论Android通过Parcelable和Serializable实现各种类型嵌套序列化的方法。 ...

    Android Parcelable与Serializable详解及区别

    在Android开发中,数据传输和序列化是必不可少的环节,其中`Parcelable`和`Serializable`是两种常用的序列化方式。本文将深入解析这两种机制的区别、优缺点以及它们的使用场景。 首先,`Serializable`接口是Java...

    Parcelable与Serializable

    在Android开发中,数据传输和保存是常见的需求,而`Parcelable`和`Serializable`就是两种主要的序列化机制。它们都是将对象转换为字节流,以便存储或在网络中传递,但`Parcelable`通常被认为比`Serializable`更高效...

    诠释Android中序列化的原理与机制

    本文将深入探讨Android中两种主要的序列化方式:Serializable和Parcelable,并解析它们的工作原理及优缺点。 首先,我们来了解Serializable接口。Serializable是Java提供的一个标准序列化接口,任何实现了此接口的...

    android Activity之间数据传递 Parcelable和Serializable接口的使用

    android Activity之间数据传递 Parcelable和Serializable接口的使用的具体实例代码,详情请看&gt;http://blog.csdn.net/js931178805/article/details/8268144

Global site tag (gtag.js) - Google Analytics