Android开发你应该懂的:序列化

作者: 606fd5f5448c | 来源:发表于2017-11-14 13:19 被阅读77次
Android开发你应该懂的

一.为什么要用到序列化

进行android开发的时候,无法将对象的引用传给activitys和fragments,需要将这些对象放在一个Intent或者Bundle里面,然后在传传递

二.什么是序列化

表示将一个对象转换成可存储或者可传输的状态。序列化后的对象可以在网络上传输,也可以村粗到本地

三.怎么序列化

android中Intent传递类对象有两种方式实现

1.Serializable (java自带)
Serializable是序列化的意思,表示将一个对象转换成可存储或者可传输的状态。序列化后可以传输或者存储

使用方法如下:

public class Person implements Serializable {
    String name="";
    private String number="";
    private String address=""; 
    private static final long serialVersionUID = 46543445; 
 
    public void setName(String name)
    {
        this.name = name;
    }
     
    public void setNumber(String number)
    {
        this.number = number;
    }
 
    public void setAddress(String address)
    {
        this.address = address;
    }
     
    public String getName()
    {
        return name;
    }
         
    public String getNumber()
    {
        return number;
    }
         
    public String getAddress()
    {
        return address;
    }
}

2.Parecelable (android专用)
Parecelab方式的实现原理是将一个完整的对象进行分解,而分解好后的每一部分都是Intent所支持的数据类型,这样就可以传递了

使用方法如下:

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();
     }
 }

四.Serializable和Parecelable的区别

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

相关文章

网友评论

    本文标题:Android开发你应该懂的:序列化

    本文链接:https://www.haomeiwen.com/subject/rqoxvxtx.html