Android---Parcelable包装类的作用

android提供了一种新的类型:Parcel。本类被用作封装数据的容器,封装后的数据可以通过Intent或IPC传递。 除了基本类型以外,只有实现了Parcelable接口的类才能被放入Parcel中。Android平台对可通过进程通信(IPC)机制进行传递的数据定义进行约定,这些数据类必须实现Parcelable接口,且必须包含一个类型为Parcelable.Creator且名为CREATOR的公共静态成员。只有实现Parcelable接口的类才能以意向的扩展数据进行传递。

实现于Parcelable接口的CREATOR成员的createFromParcel方法用于告诉平台如何从包裹里创建该类的实例,而writeToParcel方法则用于告诉平台如何将该类的实例存储到包裹中。通过接口队成员的约定,Android平台可获知数据类的数据读取和写入的接口,从而进行对象的实例化和持久化,该过程如下图:

示例代码如下:

public class Person implements Parcelable{

    private String name;

    private String phone;

    //必须包含一个类型为Parcelable.Creator且名为CREATOR的公共静态成员

    private static final Parcelable.Creator<Person> CREATOR = new Parcelable.Creator<Person>() {

        @Override

        public Person createFromParcel(Parcel source) {//该方法用于告诉平台如何从包裹里创建数据类实例

            return new Person(source);

        }

        @Override

        public Person[] newArray(int size) {

            return new Person[size];

        }

    };

    public Person(String name,String phone){

        this.name = name;

        this.phone = phone;

    }

    public Person(Parcel in){

        this.name = in.readString();

        this.phone = in.readString();

    }

    @Override

    public int describeContents() {

        return 0;

    }

    

    /**

     * 告诉平台如何将数据实例写入Parcel里

     */

    @Override

    public void writeToParcel(Parcel dest, int flags) {

        dest.writeString(this.getName());

        dest.writeString(this.getPhone());

    }

    /**

     * 属性的set和get方法

     * @return

     */

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public String getPhone() {

        return phone;

    }

    public void setPhone(String phone) {

        this.phone = phone;

    }

    

}

时间: 2024-10-12 15:24:07

Android---Parcelable包装类的作用的相关文章

Android Parcelable

Android Parcelable 后面再补充 http://www.cnblogs.com/huanyou/p/5594475.html

Android Parcelable和Serializable的区别

本文主要介绍Parcelable和Serializable的作用.效率.区别及选择,关于Serializable的介绍见Java 序列化的高级认识. 1.作用 Serializable的作用是为了保存对象的属性到本地文件.数据库.网络流.rmi以方便数据传输,当然这种传输可以是程序内的也可以是两个程序间的.而Android的Parcelable的设计初衷是因为Serializable效率过慢,为了在程序内不同组件间以及不同Android程序间(AIDL)高效的传输数据而设计,这些数据仅在内存中存

[转]Android Parcelable和Serializable的区别

本文主要介绍Parcelable和Serializable的作用.效率.区别及选择,关于Serializable的介绍见Java 序列化的高级认识. 1.作用 Serializable的作用是为了保存对象的属性到本地文件.数据库.网络流.rmi以方便数据传输,当然这种传输可以是程序内的也可以是两个程序间的.而Android的Parcelable的设计初衷是因为Serializable效率过慢,为了在程序内不同组件间以及不同Android程序间(AIDL)高效的传输数据而设计,这些数据仅在内存中存

Android Parcelable和Serializable的区别,androidparcelable

本文主要介绍Parcelable和Serializable的作用.效率.区别及选择,关于Serializable的介绍见Java 序列化的高级认识. 1.作用 Serializable的作用是为了保存对象的属性到本地文件.数据库.网络流.rmi以方便数据传输,当然这种传输可以是程序内的也可以是两个 程序间的.而Android的Parcelable的设计初衷是因为Serializable效率过慢,为了在程序内不同组件间以及不同Android程 序间(AIDL)高效的传输数据而设计,这些数据仅在内存

android Parcelable完全解析

title: android.os.Parcelable文档自译 date: 2014-12-05 09:16:06 tags: android.os.Parcelable接口的已知间接子类很多,这里就不列举了: Class Overview Interface for classes whose instances can be written to and restored from a Parcel. Classes implementing the Parcelable interfac

Android Parcelable对象生成:ParcelableGenerator

github 地址: https://github.com/baoyongzhang/ParcelableGenerator 分析: 该项目是使用了Annotation的编译期注解,即@Retention(RetentionPolicy.CLASS) 同时未使用@Inherited注解,所以在需要序列化的 不管父类还是子类上  都要加上@Parcelable 如下引用readme.md ParcelableGenerator 介绍 ParcelableGenerator可以将任意对象转换为Par

Android onCreate 的savedInstanceState 作用

在activity的生命周期中,只要离开了可见阶段,或者说失去了焦点,activity就很可能被进程终止了!,被KILL掉了,,这时候,就需要有种机制,能保存当时的状态,这就是savedInstanceState的作用. 当一个Activity在PAUSE时,被kill之前,它可以调用onSaveInstanceState()来保存当前activity的状态信息(在paused状态时,要被KILLED的时候).用来保存状态信息的Bundle会同时传给两个method,即onRestoreInst

Android Parcelable接口的使用/序列化数据

首先,我们要知道Android序列化的方法有两种,一个是实现Serializable,这是JavaSE中就支持的接口,后来google推出了专门针对Android的接口Parcelable(其性能相对Serializable将近快了10倍) 然后我们要知道Android内部传递实例的基本方法:一是Bundle.putSerializable(Key,Object),另一种是Bundle.putParcelable(Key,Object),它们分别要实现Serializable和Parcelabl

Android学习—Application的作用

What is Application Data passing between components using Application Data caching in Application PitFalls MemoryLeak Snippets 学习android挺长时间了,但是对于Appliction还不是很了解.今天花一些时间研究了一下Application. What is Application Application和Actovotu,Service一样是android框架的一