【问题标题】:What's different of putSerializable and putParcelable in Java?Java 中 putSerializable 和 putParcelable 有什么不同?
【发布时间】:2015-10-22 20:07:21
【问题描述】:

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

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

感谢所有给我成长机会的人:)

【问题讨论】:

标签: java android bundle


【解决方案1】:

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

putSerializable 和 putParcelable 有什么不同

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

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

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

【讨论】:

    【解决方案2】:

    一般来说,ParcelableSerializable 快得多。如果你想了解更多,这里有一篇很棒的文章http://www.developerphil.com/parcelable-vs-serializable/

    【讨论】:

      【解决方案3】:

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

      黑带解释得很好。

      在我看来,您不需要在内部使用 Serializable。 我建议使用 android 的消息容器(Parceable)。您永远不知道 Android SDK 将走向何方,您确实希望轻松确保最大兼容性。请记住,Android 有自己的 SDK(不是 Java 的)。

      【讨论】:

        【解决方案4】:

        对于这两个你必须实现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 较低,但您只需在类上添加接口即可使其工作:

        private static final long serialVersionUID = 0L; 应该设置在实现 Serializable 的类中 http://developer.android.com/reference/java/io/Serializable.html

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            猜你喜欢
            • 2021-11-08
            • 2015-02-20
            • 2011-11-03
            • 1970-01-01
            • 2013-11-18
            • 2010-10-07
            • 2013-06-09
            • 2011-05-22
            • 2015-11-04
            相关资源
            最近更新 更多