1.Android 传递自定义数据:
1.1 parcelable接口:android 提供的专门给我们用来传输对象的序列化接口。
首先新建ActivityA 和 ActivityB 以及 需要ActivityA传输给ActivityB的对象Dog
创建Dog类:
public calss Dog implements Parcelable{
String name;
int age;
String type;
// 描述方法,直接为零就好。
public int describeContents(){
return 0;
}
// 这个方法是将你需要的数据打包写入到dest当中。
pubilic void writeToparcel(Parcel dest,int flags){
dest.writeString(name);
dest.writeInt(age);
dest.writeString(type);
}
//对象的创建器,解包你要的对象。
public status final Parcelable.Creator<需要传递的对象Dog> CREATOR = new Parcelable.Creator
public Dog CreatFromParcel(Parcel in)
{
Dog dog = new Dog();
dog.name = in.readString();
dog.age = in.readInt();
dog.type = in.ReadSting();
return dog;
}
piblic Dog[] new array(int size){
return new Dog[size];
}
};
}
ActivityA中我们需要实现如下语句:
Intent intent = new Intent(上下文this,需要跳转的ActivityB.class二进制文件);
Dog dog = new Dog();
dog.name = "wangwang"
dog.age = 1;
dog.type = "萨摩耶";
intent.putExtra("key dog ",value parcelable序列化对象 dog );
//这个时候我们必须让dog对象实现Parcelabel这个接口,并且同时实现parcelable中的三个方法:
A describeContents
B writeToparcel
C Parcelable.Creator<需要传递的对象Dog> CREATOR = new Parcelable.Creator
ActivityB中我们需要接受ActivityA中传递过来的parcelable对象的数据。
Intent intent = intent.getIntent();
Dog dog = intent.getParcelableExtra(key "dog");
1.2 serialazable接口(序列化接口):在什么情况下我们需要序列化?
A :这个对象需要存入文件里面去写入文件里。
B:这个对象进行传输的时候也是需要序列化。
首先新建两个ActivityA 和 ActivityB 以及创建一个需要通过ActivityA传输给ActivityB的对象Cat类。
Cat cat = new Cat();
cat.name = "皮卡丘";
cat.age = 2;
cat.type = "英短";
Intent intent = new Intent("当前activity的上下文this",需要跳转的Activity的二进制文件ActivityB.class)
传递对象:Intent中没有put Object的方法,但是有两个这样的接口:
ActivityA和ActivityB可能是两个进程当中,两个进程之间的传输就需要利用到网络传输。所以需要利用到:
intent.putExtera("cat",“Serialazable 序列化对象cat”)
//serialazable 序列化对象也就是Cat,我们需要把Cat类 implements Serialazable 表示该对象是可以被序列化的。
ActivityB中如何接收ActivityA中传递过来的cat序列化数据呢?
Intent intent = getntent();
Cat cat = intent.getSerializableExtra("cat") //参数是key
这样ActivityB中就接收到ActivityA中传输过来的对象了。
Pacelable与Serializable对比,Serializable javaIO原生相对消耗的性能和资源更大一点。