gpt4 book ai didi

android - `writeValue` 和 `writeParcelable` 有什么区别?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:16:59 27 4
gpt4 key购买 nike

我一直在寻找一种将对象从一个 Activity 传递到另一个 Activity 的方法。不同的教程指出,最好的方法是使类 Parcelable。我已经设法实现了它,但我还有一个问题。

Office 类中存在对另一个可打包对象(location)的引用。 This教程告诉我们使用 dest.writeParcelable(location, flags);in.readParcelable(LatLng.class.getClassLoader()); 对其进行序列化,但是 parcelabler使用 dest.writeValue(location); 创建代码,然后使用 (LatLng) in.readValue(LatLng.class.getClassLoader()); 创建代码。我已经检查过,它是双向的。

有人可以解释一下这两种方法有什么区别吗?由于某些原因,它们中的任何一个更好吗?谢谢!

public class Office implements Parcelable {

@SuppressWarnings("unused")
public static final Parcelable.Creator<Office> CREATOR = new Parcelable.Creator<Office>() {
@Override
public Office createFromParcel(Parcel in) {
return new Office(in);
}

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

public final String name;
public final String address;
public final LatLng location;

public Office(String name, String address, LatLng location) {
this.name = name;
this.address = address;
this.location = location;
}

protected Office(Parcel in) {
name = in.readString();
address = in.readString();
// location = (LatLng) in.readValue(LatLng.class.getClassLoader());
location = in.readParcelable(LatLng.class.getClassLoader());
}

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

@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeString(address);
// dest.writeValue(location);
dest.writeParcelable(location, flags);
}
}

最佳答案

writeValue 更通用,因为它采用 Object 作为参数,所以在内部它们会检查 instanceOf 对象以调用特定方法。如果您知道类型,我会坚持使用特定类型

关于android - `writeValue` 和 `writeParcelable` 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33076942/

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