如何在 AIDL 中使用 Parcelable

How to use Parcelable in AIDL

我定义了一个实现 Parcelable 的 class,像这样:

public class Book implements Parcelable

而且我知道我可以像这样在 AIDL 文件中使用这个 class:

import com.okay.demo.aidl.bean.Book;
interface IBookManager {
   void addBook(in Book book);
}

但我想知道的是,如果我不知道实现 class,我可以只在 AIDL 文件中 Parcelable 吗?我可以像这样使用 Parcelable 吗:

interface IBookManager {
   void addData(in Parcelable data);
}

我曾尝试将 Book 替换为 Parcelable,但没有成功。

或者它不能在 AIDL 中执行此操作?

Android documentation 表示您应该为 class Book 创建一个 AIDL 文件。您的 Book.aidl 应如下所示:

import com.okay.demo.aidl.bean.Book;

// Declare Rect so AIDL can find it and knows that it implements
// the parcelable protocol.
parcelable Book;

有了这个新文件,您现在可以在 AIDL 文件中使用 Book

import com.okay.demo.aidl.bean.Book;

interface IBookManager {
   void addData(in Book book);
}