Android 进阶之使用Intent传递对象

Android 进阶之使用Intent传递对象

                                                                               ——整理自《第一行代码》

方式一:Serializable

public class Person implements Serializable{

                               //创建实体类使之实现Serializable接口

    private String name;

    private int age;

    public Person(String name, int age) {

        this.name = name;

        this.age = age;

    }


    public String getName() {

        return name;

    }


    public void setName(String name) {

        this.name = name;

    }


    public int getAge() {

        return age;
    
    }
    

    public void setAge(int age) {

        this.age = age;

    }


}

Intent使用:

Person person = new Person("Tom",20);

Intent intent = new Intent();

intent.putExtra("person",person);//直接存入被序列化的对象实例



Person person = (Person) getIntent().getSerializableExtra("person");

//在要跳转的Activity中取出对象 注意向下转型!

方式二:Parcelable

public class Person implements Parcelable {

                               //创建实体类使之实现Parcelable接口

    ……

    /**

    * 重写describeContents()与writeToParcel()
    
    */


    @Override

    public int describeContents() {

        return 0; //直接返回0

    }



    @Override

    public void writeToParcel(Parcel parcel, int i) {


        //将Person中的字段一一写出

        parcel.writeString(name); //写出name

        parcel.writeInt(age); //写出age

    }


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

            //提供一个常量CREATOR指定泛型Person

    /**

    * 重写createFromParcel()与newArray()
    
    */


    @Override

    public Person createFromParcel(Parcel parcel) {

        Person person = new Person();

        person.name = parcel.readString();//读取name

        person.age = parcel.readInt();//读取年龄

        //注意顺序与写出顺序一致

        return person;

    }


    @Override

    public Person[] newArray(int i) {

        return new Person[i];

        }

    };


}

Intent使用:

Person person = new Person("Tom",20);

Intent intent = new Intent();

intent.putExtra("person",person);//存



Person person = (Person) getIntent().getParcelabelExtra("person");

//在要跳转的Activity中取出对象 注意向下转型!

对比:Serializable方式较为简单,但由于是对整个对象进行序列化,效率会比Parcelable方式低,通常情况下建议使用Parcelable方式实现Intent传递对象。

猜你喜欢

转载自blog.csdn.net/qq_34149526/article/details/83069633
今日推荐