【Android-java】Parcelable 是什么?

Parcelable 是 Android 中的一个接口,用于实现将对象序列化为字节流的功能,以便在不同组件之间传递。与 Java 的 Serializable 接口不同,Parcelable 的性能更高,适用于 Android 平台。

要实现 Parcelable 接口,我们需要在对象类中实现以下方法:

  1. writeToParcel(Parcel dest, int flags):将对象的数据写入 Parcel 对象中。
  2. describeContents():返回对象的特殊标记,一般返回 0 即可。
  3. CREATOR:一个静态常量,用于创建 Parcelable 对象的实例。

下面是一个示例代码,用于演示如何实现 Parcelable 接口:

public class Book implements Parcelable {
    
    
    private String title;
    private String author;
    private int publishYear;

    // 构造方法
    public Book(String title, String author, int publishYear) {
    
    
        this.title = title;
        this.author = author;
        this.publishYear = publishYear;
    }

    // 从 Parcel 对象中读取数据,并赋值给对象的属性
    protected Book(Parcel in) {
    
    
        title = in.readString();
        author = in.readString();
        publishYear = in.readInt();
    }

    // 将对象的数据写入 Parcel 对象中
    @Override
    public void writeToParcel(Parcel dest, int flags) {
    
    
        dest.writeString(title);
        dest.writeString(author);
        dest.writeInt(publishYear);
    }

    // 返回对象的特殊标记,一般返回 0 即可
    @Override
    public int describeContents() {
    
    
        return 0;
    }

    // 创建 Parcelable 对象的实例
    public static final Creator<Book> CREATOR = new Creator<Book>() {
    
    
        @Override
        public Book createFromParcel(Parcel in) {
    
    
            return new Book(in);
        }

        @Override
        public Book[] newArray(int size) {
    
    
            return new Book[size];
        }
    };

    // 其他方法和属性的定义...

    // 示例代码中只实现了一些必要的方法,如果需要使用 Parcelable 进行数据传递,可以根据实际需求完善其他方法和属性。
}

这是一个简单的 Book 类,实现了 Parcelable 接口。通过 writeToParcel() 方法,我们将对象的数据写入 Parcel 对象中;而通过 protected 的构造方法和 CREATOR,我们可以从 Parcel 对象中读取数据,并创建出 Book 对象的实例。

要使用 Parcelable 对象进行传递,可以将其放入 Intent 或 Bundle 中,然后在另一个组件中取出。例如,我们可以在一个 Activity 中创建一个 Book 对象,并将其传递给另一个 Activity:

// 创建一个 Book 对象
Book book = new Book("Android Development", "John Smith", 2022);

// 将 Book 对象放入 Intent 中
Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra("book_key", book);
startActivity(intent);

在接收 Book 对象的另一个 Activity 中,我们可以这样获取:

// 在 onCreate() 方法中获取 Intent
Intent intent = getIntent();

// 从 Intent 中取出 Book 对象
Book book = intent.getParcelableExtra("book_key");

// 使用 Book 对象的属性
String title = book.getTitle();
String author = book.getAuthor();
int publishYear = book.getPublishYear();

这是一个简单的 Parcelable 示例,可以在当前主流的 Android 版本上正确运行。请注意,示例代码中的 Book 类只是一个示例,实际使用 Parcelable 时,需要根据自己的需求定义相应的类,并实现 Parcelable 接口。

猜你喜欢

转载自blog.csdn.net/weixin_44002043/article/details/132061468
今日推荐