zoukankan      html  css  js  c++  java
  • Parcelable 小记

    Parcelable 类,接口类,用于数据的序列化封装。常见的Bundle,Intent类都实现了该类。

     
    实现该类需要实现writeToParcel和describeContents方法,最后还需要实现一个静态接口Creator

    延伸下:为何需要数据的序列化?
    数据的传输和保存时,如果一个对象A引用了另一个对象B,那么如果我们需要保存两个对象A,B,用普通的数据保存则是要进行保存两次B,但是通过序列化则不会,序列化会在保存前先给对象编号,然后在保存时遍历前面,如果存在则标记为已保存。
    序列化的定义是将对象或者类,序列化成可以传输的流,从而可以传送给别人使用。所以运用在IPC,网络传输,文件存储。
    序列化可以通过实现Serializable 和 Parcelable来实现。
    Serializable Java自带,效率低,但是可以存储到本地。
    parcelable Android自有,效率高,不可存储本地。
     
     
    附一个简易的Parcelable类的实现
    public class MyParcel implements Parcelable {
           
            private int mIntData ;
            private String mStringData ;
           
            public MyParcel() {
                  // TODO Auto-generated constructor stub
           }
            public MyParcel(Parcel in){
                  mIntData = in.readInt();
                  mStringData = in.readString();
                 
           }
           
            public String getStringData(){
                  return mStringData ;
           }
            public void setStringData(String data){
                  mStringData = data;
           }
            @Override
            public int describeContents() {
                  // TODO Auto-generated method stub
                  return 0;
           }
     
            @Override
            public void writeToParcel(Parcel dest, int flags) {
                  // TODO Auto-generated method stub
                 dest.writeInt( mIntData);
                 dest.writeString( mStringData);
           }
     
            public static final Parcelable .Creator<MyParcel> CREATOR = new Parcelable.Creator<MyParcel>() {
     
                  @Override
                  public MyParcel createFromParcel(Parcel source) {
                         // TODO Auto-generated method stub
                         return new MyParcel(source);
                 }
     
                  @Override
                  public MyParcel[] newArray(int size) {
                         // TODO Auto-generated method stub
                         return new MyParcel[size];
                 }
           };
    }
  • 相关阅读:
    【转】由浅入深表达式树(一)创建表达式
    【转】背后的故事之
    【转】背后的故事之
    【转】C#集合类型大盘点
    【转】最近用Timer踩了一个坑,分享一下避免别人继续踩
    【转】《深入理解C# 3.x的新特性》博文系列汇总
    【转】文件各种上传,离不开的表单
    【转】文件下载之断点续传(客户端与服务端的实现)
    【转】权限管理学习 一、ASP.NET Forms身份认证
    【转】C#单元测试,带你快速入门
  • 原文地址:https://www.cnblogs.com/jianggest/p/parcelable.html
Copyright © 2011-2022 走看看