Java中putSerializable和putParcelable的不同之处是什么?

时间:2015-07-31 08:07:14

标签: java android bundle

您好我是Android的初级开发者:)我想将ArrayList<Custom>的{​​{1}}值发送给Activity。我知道必须使用Fragment,但我不知道该方法可以帮助我。

  1. BundleputSerializable有什么不同?
  2. 在我的情况下,哪种方法可以帮助我putParcelableputParcelableArrayList
  3. 感谢所有这些让我有机会成长:)

5 个答案:

答案 0 :(得分:8)

SerializableParcelable都是一个界面。前者与java一样古老。它允许您以持久的方式存储/写入对象。它的美妙之处在于您只需实现界面即可。后者Parcelable是特定于Android的。它比Serializable快,但您必须实现接口的方法才能使用它。

  

putSerializable和putParcelable

的不同之处

putSerializable接受实现Serializable的对象,putParcelable接受实现Parcelable的对象

  

在我的情况下,哪种方法可以帮我putParcelableArrayList或   putSerializable?

很难说。一般来说,我会说Parcelable

答案 1 :(得分:2)

一般来说,ParcelableSerializable更快。如果您想了解更多相关内容,请参阅以下文章http://www.developerphil.com/parcelable-vs-serializable/

答案 2 :(得分:2)

除了为给定键添加到地图的实际值之外,putSerializable和putParcelable之间没有区别。 putParcelableArrayList也是如此。在给定的密钥,您将阅读SparseArray<? extends Parcelable>

Blackbelt解释得非常好。

从我的角度来看,您不需要在内部使用Serializable。 我建议使用android的容器进行消息(Parceable)。您永远不会知道Android SDK的用途,并且您确实希望确保最大程度的兼容性。请记住,Android拥有自己的SDK(而不是Java)。

答案 3 :(得分:1)

对于你必须实现ParcelableSerializable类,都允许持久化。

Parcelable更快,您将编写更多功能以使其正常工作:

describeContents() writeToParcel(Parcel out, int flags) Parcelable.Creator<MyClass> CREATOR = new Parcelable.Creator<MyClass>() MyClass(Parcel in) //an constructor for Parcel object (Parcelable) http://developer.android.com/reference/android/os/Parcelable.html

Serializable较低,但您只需在类上添加界面即可使其工作:

应该在实现Serializable的类中设置

private static final long serialVersionUID = 0L; http://developer.android.com/reference/java/io/Serializable.html

答案 4 :(得分:1)

android中的

Parcelable是一个接口,每个想要使用intent传递不同活动的对象都必须实现这个接口。这个接口有两种方法,我们必须 implements: describeContent() < / strong>返回一个返回void的int和writeToParcel(Parcel dest, int flags)。实现此接口的类必须有一个名为CREATOR的静态字段,操作系统使用该字段重新创建对象。可以通过Android中的Intent传递可分辨的Parcelable数组。这是在活动之间传递数据并利用所有android功能的最优雅方式。

当需要通过网络发送数据或存储在文件中时,通常会使用

Serialization