gpt4 book ai didi

Android Parcelable 和 Serializable

转载 作者:IT老高 更新时间:2023-10-28 21:52:58 37 4
gpt4 key购买 nike

所以我知道建议在 android 中使用 Parcelable 而不是 Serializable,因为它更快。

我的问题是:避免使用 Serializable 是不可能的吗?

如果我有一个想要序列化的自定义对象,假设我有以下类定义

public class Person {
String name;
int Age;
...
....
}

使这个 parcelable 很容易,因为 Person 类包含 parcel.write*() 支持的类型,即有 parcel.writeString 和 parcel.writeInt

现在,如果 Person 类如下:

public class PersonTwo {
MyCustomObj customObj;
String name;
int Age;
...
....
}

我应该如何打包 MyCustomObj 对象?看来我需要再次使用可序列化?但同样,我认为使用可序列化是很慢的,而且似乎我们别无选择,只能在这种情况下使用它。

我不明白

谁能告诉我在这种情况下我将如何打包 PersonTwo?

最佳答案

Ajay 提供的链接正是您正在寻找的内容,以及您如何做到这一点。好吧,您可以做的是实现 Parcelable 到您的 CustomObject1 并为其创建一个 Parcelable 类,然后您可以使用该 Parcelable 类将其 Parcel 放在另一个 Parcelable 类中,该类将 Parcel 两个 CustomObjects

public class CustomObject1 implements Parcelable {

// parcelable code CustomObject1
}

public class CustomObject2 implements Parcelable {

private CustomObject1 obj1;

// add CustomObject1 here with getter setter
// parcelable code for CustomObject2

@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeParcelable(obj1, flags);
}
private void readFromParcel(Parcel in) {
obj1 = in.readParcelable(CustomObject1.class.getClassLoader());
}
............
}

关于Android Parcelable 和 Serializable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9323044/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com