当前位置: 首页 > 编程笔记 >

Android中的Parcelable和Serializable之间的区别

归俊
2023-03-14
本文向大家介绍Android中的Parcelable和Serializable之间的区别,包括了Android中的Parcelable和Serializable之间的区别的使用技巧和注意事项,需要的朋友参考一下

本示例演示了Android中可打包和可序列化之间的区别

可序列化

可序列化是一个可标记的接口,或者我们可以将其称为空接口。它没有任何预先实现的方法。可序列化将把一个对象转换为字节流。因此,用户可以在一个活动到另一个活动之间传递数据。可序列化的主要优点是创建和传递数据非常容易,但是与可打包相比,这是一个缓慢的过程。

一个可序列化的简单示例,如下所示–

import java.io.Serializable;
class serializableObject implements Serializable {
   String name;
   public serializableObject(String name) {
      this.name = name;
   }
   public String getName() {
      return name;
   }
}

可包裹

具有包裹功能比可序列化速度更快。Parcelable将把对象转换为字节流,并在两个活动之间传递数据。与序列化相比,编写可打包的代码有点复杂。在两个活动之间传递数据时,它不会创建更多临时对象。

一个简单的Parcel功能示例,如下所示–

import android.os.Parcel;
import android.os.Parcelable;
class parcleObject implements Parcelable {
   private String name;
   protected parcleObject(Parcel in) {
      this.name = in.readString();
   }
   public parcleObject(String name) {
      this.name = name;
   }
   public String getName() {
      return name;
   }
   public void setName(String name) {
      this.name = name;
   }
   public static final Creator<parcleObject> CREATOR = new Creator<parcleObject>() {
      @Override
      public parcleObject createFromParcel(Parcel in) {
         return new parcleObject(in);
      }
      @Override
      public parcleObject[] newArray(int size) {
         return new parcleObject[size];
      }
   };
   @Override
   public int describeContents() {
      return 0;
   }
   @Override
   public void writeToParcel(Parcel dest, int flags) {
      dest.writeString(this.name);
   }
}
 类似资料:
  • 本文主要介绍Parcelable和Serializable的作用、效率、区别及选择。 1、作用 Serializable的作用是为了保存对象的属性到本地文件、数据库、网络流、rmi以方便数据传输,当然这种传输可以是程序内的也可以是两个程序间的。而Android的Parcelable的设计初衷是因为Serializable效率过慢,为了在程序内不同组件间以及不同Android程序间(AIDL)高效的

  • 本文向大家介绍Android中Serializable和Parcelable序列化对象详解,包括了Android中Serializable和Parcelable序列化对象详解的使用技巧和注意事项,需要的朋友参考一下 本文详细对Android中Serializable和Parcelable序列化对象进行学习,具体内容如下 学习内容: 1.序列化的目的 2.Android中序列化的两种方式 3.Par

  • 问题内容: @id/和之间的区别是什么@+id/? 在@+id/加号中+指示创建一个新的资源名称并将其添加到R.java文件中,但是那又如何@id/呢?从:的文档中,ID当引用Android资源时ID,不需要加号,但必须添加android包名称空间,如下所示: 但是在下面的图像中,Eclipse并未提出任何建议@android:id/。 该图显示了对@ / id和@ + / id的建议 是和一样吗

  • 本文向大家介绍Android中使用Intent在Activity之间传递对象(使用Serializable或者Parcelable)的方法,包括了Android中使用Intent在Activity之间传递对象(使用Serializable或者Parcelable)的方法的使用技巧和注意事项,需要的朋友参考一下  Android中的不同Activity之间传递对象,我们可以考虑采用Bundle.pu

  • 问题内容: 众所周知 返回调用线程的标识符,该标识符与setThreadPriority(int,int)一起使用。 但是我发现不等于。因此,我猜前者是JVM版本的线程ID,后者是Linux版本的线程ID。 我对吗?如果是这样,为什么Java会创建自己的线程ID而不使用Linux线程ID? 更新: 经过进一步研究并阅读了android的源代码,我有了新的认识: 是与平台(OS)相关的操作,在and

  • hiii 我是机器人开发中的新手。谁能告诉我什么是编译SdkVersion和buildTollsVersion在构建工具版本中定义。 这是正确的定义吗。。?如果不是,那会导致什么。。? 请帮忙谢谢