在Android开发中,Parcelable接口是Android系统提供的一种高效的数据序列化方式,相比于Serializable接口,它在传递和存储数据时性能更高。本案例将探讨如何创建一个简单的Parcelable学生类,以便在Activity之间传递或者保存到Intent中。
我们定义一个名为`Student`的Java类,该类表示学生对象。它通常包含一些属性,如姓名(name)、年龄(age)等。为了使`Student`类支持Parcelable,我们需要实现`Parcelable`接口并完成其相关方法。
```java
public class Student implements Parcelable {
private String name;
private int age;
// 构造函数
public Student(String name, int age) {
this.name = name;
this.age = age;
}
// Parcel的构造函数,用于反序列化
protected Student(Parcel in) {
name = in.readString();
age = in.readInt();
}
// 创建Parcelable的 Creator 对象
public static final Creator<Student> CREATOR = new Creator<Student>() {
@Override
public Student createFromParcel(Parcel in) {
return new Student(in);
}
@Override
public Student[] newArray(int size) {
return new Student[size];
}
};
// 实现writeToParcel()方法,用于序列化
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeInt(age);
}
// 返回当前对象的描述符,用于识别不同的 parcelable 类型
@Override
public int describeContents() {
return 0;
}
// 获取属性
public String getName() {
return name;
}
public int getAge() {
return age;
}
// 设置属性
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
}
```
在上述代码中,我们定义了`Student`类,包含了`name`和`age`两个属性,并实现了`Parcelable`接口。`Parcel`构造函数用于反序列化,`createFromParcel()`方法创建新的`Student`实例,`writeToParcel()`方法用于序列化`Student`对象,`describeContents()`方法返回一个常量表示对象内容,通常为0。我们还添加了获取和设置属性的方法。
现在,我们可以创建`Student`对象,并在Intent中传递。例如,在一个Activity中:
```java
Student student = new Student("张三", 20);
Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra("student", student);
startActivity(intent);
```
然后,在接收Activity中,我们可以通过`getIntent()`和`extras`来获取`Student`对象:
```java
Intent intent = getIntent();
Student student = intent.getParcelableExtra("student");
Log.d("StudentInfo", "Name: " + student.getName() + ", Age: " + student.getAge());
```
这就是一个简单的使用Parcelable的学生类案例。在实际开发中,如果`Student`类有更复杂的属性,例如包含其他对象,你需要在`writeToParcel()`和`createFromParcel()`中处理这些对象。注意,当涉及到其他Parcelable对象时,确保它们也实现了Parcelable接口。
总结来说,通过实现Parcelable接口,我们可以创建高效的可序列化的对象,这在Android应用中传递大量数据或保存状态时非常有用。这个简单的`Student`类示例展示了如何实现和使用Parcelable,帮助开发者理解这一关键概念。