三分钟弄懂Android&Parcelable&

作者: _ming_ming | 来源:发表于2016-07-30 19:53 被阅读629次

为什么要序列化

  • 1.实现Parcelable就是为了进行序列化,那么,为什么要序列化?
    1)永久性保存对象,保存对象的字节序列到本地文件中;
    2)通过序列化对象在网络中传递对象;
    3)通过序列化在进程间传递对象。

  • 2.实现序列化的方法
    Android中实现序列化有两个选择:一是实现Serializable接口(是JavaSE本身就支持的),一是实现Parcelable接口(是Android特有功能,效率比实现Serializable接口高效,可用于Intent数据传递,也可以用于进程间通信(IPC))。实现Serializable接口非常简单,声明一下就可以了。
    ** 实现Parcelable接口稍微复杂一些,但效率更高。(推荐这种)**

  • 3.Parcelable接口定义

public interface Parcelable { 
//内容描述接口,基本不用管 
public int describeContents(); 
//写入接口函数,打包 
public void writeToParcel(Parcel dest, int flags); 
//读取接口,目的是要从Parcel中构造一个实现了Parcelable的类的实例处理。
//因为实现类在这里还是不可知的,所以需要用到模板的方式,继承类名通过模板参数传入。
//为了能够实现模板参数的传入,这里定义Creator嵌入接口,内含两个接口函数分别返回单个和多个继承类实例 。
public interface Creator<T> { 
public T createFromParcel(Parcel source); 
public T[] newArray(int size); }
}
  • 4.实现Parcelable步骤
    1)implements Parcelable
    2)重写writeToParcel方法,将你的对象序列化为一个Parcel对象,即:将类的数据写入外部提供的Parcel中,打包需要传递的数据到Parcel容器保存,以便从 Parcel容器获取数据
    3)重写describeContents方法,内容接口描述,默认返回0就可以
    4)实例化静态内部对象CREATOR实现接口Parcelable.Creator

总结:

通过writeToParcel将你的对象映射成Parcel对象,再通过createFromParcel将Parcel对象映射成你的对象。也可以将Parcel看成是一个流,通过writeToParcel把对象写到流里面,在通过createFromParcel从流里读取对象,只不过这个过程需要你来实现,因此写的顺序和读的顺序必须一致。

示例代码如下

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

End

相关文章

  • 三分钟弄懂Android&Parcelable&

    为什么要序列化 1.实现Parcelable就是为了进行序列化,那么,为什么要序列化?1)永久性保存对象,保存对象...

  • UI

    [三分钟弄懂iPhone X 设计尺寸和适配](http://www.ui.cn/detail/283956.html)

  • Xcode8、iOS 11、iPhone X新特性

    Xcode 9 模拟器新特性 使用Xcode进行iOS设备无线调试 简书App适配iOS 11 三分钟弄懂iPho...

  • iPhone X 的适配学习思考

    前几天看到了颜伟CSD的一篇关于 iPhone X 的适配文章 “说人话!三分钟弄懂iPhone X 设计尺寸和适...

  • Xcode中和symbols有关的几个设置

    其实被这个问题困扰了好久,不过秉承着三分钟热度的新年新气象,还是要多弄懂一点(⊙_⊙)ゞ Symbols是什么东西...

  • Xcode缩小ipa包大小及symbols设置等,xcode打印

    其实被这个问题困扰了好久,不过秉承着三分钟热度的新年新气象,还是要多弄懂一点(⊙_⊙)ゞ Symbols是什么东西...

  • Android&iOS

    一 简述 同为移动客户端,Android&iOS有着许多相似的地方,客户端开发的主要工作为界面编写,数据存储,网络...

  • Android&Jetpack

    欢迎关注我的公众号公众号 什么是 Android Jetpack?Android Jetpack 是一套组件、工具...

  • 2019-02-04

    不是所有东西都需要弄懂 也不是所有东西都能弄懂 因为有时候需要我们不懂

  • 【Android&Jcenter】将Gradle And

    1.去jcenter官网注册个账号 https://bintray.com 2.在项目根目录下build.grad...

网友评论

    本文标题:三分钟弄懂Android&Parcelable&

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