zoukankan      html  css  js  c++  java
  • Android中Parcelable序列化总结

    在使用Parcelable对android中数据的序列化操作还是比较有用的,有人做过通过对比Serializable和Parcelable在android中序列化操作对象的速度比对,大概Parcelable相比Serializable要快10倍左右、、、给一个连接可以瞅瞅他们序列化的区别http://greenrobot.me/devpost/android-parcelable-serializable/

     

    下面来总结一下我们基本数据类型、对象、数组、list等做Parcelable的方法,主要是做个总结直接看下code

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    package com.suning.mobile.paysdk.pay;
     
    import java.util.ArrayList;
     
    import android.os.Parcel;
    import android.os.Parcelable;
     
    import com.yaya.test.OrderInfoBean;
     
    /**
     *
     * 〈一句话功能简述〉<br>
     * 〈功能详细描述〉 数据类型序列化
     */
    public class ParcelableType implements Parcelable {
        /** int 类型 */
        int age;
        /** String 类型 */
        String name;
        /** boolean 注意该boolean的get和set方法 **/
        boolean isGood;
        /** boolean 类型 **/
        boolean complete;
        /** 数组 **/
        private String[] ids;
        /** 对象 [内部已经序列化] **/
        private OrderInfoBean bean;
        /** list **/
        private ArrayList<orderinfobean> listBeans;
     
        /**
         * 默认构造方法
         */
        public ParcelableType() {
            // TODO Auto-generated constructor stub
        }
     
        public ParcelableType(Parcel in) {
            readFromParcel(in);
        }
     
        /***
         * 默认实现
         */
        @Override
        public int describeContents() {
            // TODO Auto-generated method stub
            return 0;
        }
     
        @Override
        public void writeToParcel(Parcel dest, int flags) {
            /** int 写入 **/
            dest.writeInt(age);
            /** string 写入 **/
            dest.writeString(name);
            /** boolean 写入 **/
            dest.writeInt(isGood ? 1 : 0);
            /** boolean 写入 **/
            dest.writeInt(complete ? 1 : 0);
            /** 数组 写入 **/
            if (ids != null) {
                dest.writeInt(ids.length);
            } else {
                dest.writeInt(0);
            }
            dest.writeStringArray(ids);
            /** 对象 写入 **/
            dest.writeParcelable(bean, flags);
            /** list 写入 **/
            dest.writeList(listBeans);
     
        }
     
        @SuppressWarnings("unchecked")
        private void readFromParcel(Parcel in) {
     
            /** int 读出 */
            age = in.readInt();
            /** stirng 读出 */
            name = in.readString();
            /** boolean 读出 */
            isGood = (in.readInt() == 1) ? true : false;
            /** boolean 读出 */
            complete = (in.readInt() == 1) ? true : false;
            /** 数组 读出 */
            int length = in.readInt();
            ids = new String[length];
            in.readStringArray(ids);
            /** 对象 读出 */
            bean = in.readParcelable(OrderInfoBean.class.getClassLoader());
            /** list 读出 */
            listBeans = in.readArrayList(OrderInfoBean.class.getClassLoader());
     
        }
     
        public static final Parcelable.Creator<parcelabletype> CREATOR = new Parcelable.Creator<parcelabletype>() {
            public ParcelableType createFromParcel(Parcel in) {
                return new ParcelableType(in);
            }
     
            public ParcelableType[] newArray(int size) {
                return new ParcelableType[size];
            }
        };
     
        public int getAge() {
            return age;
        }
     
        public void setAge(int age) {
            this.age = age;
        }
     
        public String getName() {
            return name;
        }
     
        public void setName(String name) {
            this.name = name;
        }
     
        /**
         *
         * 功能描述: <br>
         * 〈功能详细描述〉 fastJson解析时需要格式
         */
        public boolean isIsGood() {
            return isGood;
        }
     
        public void setIsGood(boolean isGood) {
            this.isGood = isGood;
        }
     
        public boolean isComplete() {
            return complete;
        }
     
        public void setComplete(boolean complete) {
            this.complete = complete;
        }
     
        public String[] getIds() {
            return ids;
        }
     
        public void setIds(String[] ids) {
            this.ids = ids;
        }
     
        public OrderInfoBean getBean() {
            return bean;
        }
     
        public void setBean(OrderInfoBean bean) {
            this.bean = bean;
        }
     
        public ArrayList<orderinfobean> getListBeans() {
            return listBeans;
        }
     
        public void setListBeans(ArrayList<orderinfobean> listBeans) {
            this.listBeans = listBeans;
        }
     
    }
  • 相关阅读:
    谈To B产品路径逻辑:To B产品的核心本质到底是什么?
    做产品应该遵循哪些宏观产品原则?
    做产品应该遵循哪些微观产品原则?
    B端产品的第一性原理思考
    美团点评王慧文:互联网有AB面,最惨烈战争发生在B2
    《罗振宇 知识就是力量》
    生活是一只龙虾
    CAD-美的热水器F50-32DQ
    CAD-椭圆和圆弧命令
    CAD-圆命令
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/4725998.html
Copyright © 2011-2022 走看看