使用Gson实现parcelable接口

Dan*_*ali 5 android parcelable gson

我正在尝试使用Gson实现parcelable接口.我们的想法是创建一个json字符串(使用gson)并将其写入parcel对象.

这可能是实现界面的正确方法吗?

我遇到的唯一问题是当我反序列化对象时.实际上,我使用gson重新创建对象.

private MyClass(Parcel in) {
    String json = in.readString();
    Gson gson = new Gson();
    gson.fromJson(json, getClass());
}
Run Code Online (Sandbox Code Playgroud)

问题是该fromJson函数返回一个对象,该对象是构造函数应该创建的对象.最后一行代码应该是这样的

this=gson.fromJson(json, getClass());
Run Code Online (Sandbox Code Playgroud)

那么,如果这是一种正确的实施方式Parcelable,我该如何解决这个问题呢?

Sni*_*las 3

您应该更仔细地阅读Parcelable javadoc。它包含您需要的一切。

正如文档中引用的:

其实例可以写入 Parcel 或从 Parcel 恢复的类的接口。实现 Parcelable 接口的类还必须有一个名为 CREATOR 的静态字段,它是实现 Parcelable.Creator 接口的对象。

因此,您应该writeToParcel声明该方法,并使用创建器从 Parcel 生成类的实例。

私有构造函数是一个附加的帮助器,您可以使用它来设置给定地块的对象的字段值,但不能设置对象本身。在Java中,this是一个正确的值,并且不能被赋值。

顺便说一句,包裹化的目标是提供短期快速序列化过程。一般来说,当您使用分割时,您应该使用快速且紧凑的数据格式。JSON 不是首选,但它会起作用。