当前位置: 代码迷 >> java >> Java中的putSerializable和putParcelable有什么不同?
  详细解决方案

Java中的putSerializable和putParcelable有什么不同?

热度:76   发布时间:2023-07-18 08:57:04.0

嗨,我是Android的初学者开发者:)我想将ArrayList<Custom>值从Activity发送到Fragment 我知道必须使用Bundle ,但我不知道什么方法可以帮助我。

  1. putSerializableputParcelable什么不同?
  2. 在我的情况下,哪种方法可以帮我putParcelableArrayListputSerializable

谢谢所有给我机会成长:)

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

putSerializable和putParcelable有什么不同

putSerializable接受执行对象Serializable ,putParcelable接受实施对象Parcelable

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

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

一般来说, ParcelableSerializable更快。 如果你想了解更多关于它的更多信息,这是一篇很棒的文章

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

Blackbelt解释得非常好。

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

对于你必须实现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)

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

private static final long serialVersionUID = 0L; 应该在实现Serializable的类中设置

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

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

  相关解决方案