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;
        }
     
    }
  • 相关阅读:
    为什么 JVM 不用 JIT 全程编译?
    JVM Internals
    JIT与JVM的三种执行模式:解释模式、编译模式、混合模式
    Dart编译技术与平台
    Dart 库预览
    使用VSCode开发Flutter
    环境变量
    使用Homebrew管理你的mac开发包
    brew 又叫Homebrew,是Mac OSX上的软件包管理工具
    使用async/await消除callback hell
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/4725998.html
Copyright © 2011-2022 走看看