gpt4 book ai didi

android - Parcel.writeSerializable 应该用在 Parcelable.writeToParcel 中吗?

转载 作者:行者123 更新时间:2023-11-30 00:45:14 29 4
gpt4 key购买 nike

我是 android 的新手,在思考 Parcelable 界面时遇到了一些麻烦。

我终于找到了这个: https://stackoverflow.com/a/2141166/6647053

上述回答的要点是,当将对象传递给 Activity 时,这:

intent.putExtra("object", parcelableObject);

比这表现得更好:

intent.putExtra("object", serializableObject);

我的问题是:在 Parcelable 中使用 Parcel 的读/写可序列化方法(而不是仅使用带有 intent.putExtra 的可序列化对象)是否有任何性能优势?为什么/为什么不?

例子:

public class MyParcelable implements Serializable, Parcelable {

/* Some Custom Object Stuff Here */

@Override
public int describeContents() {
return 0;
}

@Override
public void writeToParcel(Parcel parcel, int flags) {
parcel.writeSerializable(this);
}

public static final Parcelable.Creator<MyParcelable> CREATOR = new Parcelable.Creator<MyParcelable>() {
public MyParcelable createFromParcel(Parcel parcel) {
return parcel.readSerializable();
}

public MyParcelable[] newArray(int size) {
return new MyParcelable[size];
}
};
}

最佳答案

这样写没有任何好处:打包会和序列化一样慢。

在普通 Java 中,ExternalizableSerializable 性能更好,因为你提供了自己的 readExternal(ObjectInput in)writeObject (ObjectOutput out) 其中您应该手动序列化您的字段,而不是依赖 JVM 进行内省(introspection)并自动为您完成。 Android 的 Parcelable 具有类似的目的。

关于android - Parcel.writeSerializable 应该用在 Parcelable.writeToParcel 中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41907186/

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