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