gpt4 book ai didi

android - 在 Android Parcelable 类中读写长对象

转载 作者:行者123 更新时间:2023-11-29 16:35:41 25 4
gpt4 key购买 nike

如果说我有一个长对象跟随。以下示例是否演示了读写 Long 对象的正确方法?

Class MyClass implements Parcelable {
private Long aLongObject;

public static final Creator<MyClass> CREATOR = new Creator<MyClass>() {
@Override
public MyClass createFromParcel(Parcel in) {
return new MyClass(in);
}

@Override
public MyClass[] newArray(int size) {
.....
}
};


protected MyClass(Parcel in) {// reading Parcel
super(in);

aLongObject = in.readLong(); // correct way to ready Long object?
}

@Override
public void writeToParcel(@NonNull Parcel dest, int flags) {
super.writeToParcel(dest, flags);

dest.writeLong(aLongObject); // is this correct way to send Long?
}
}

最佳答案

您的方法的问题是 Long 值可能是 nullParcel 方法只获取/返回原始数据的值输入long,查看documentation了解详情。因此,您需要一种变通方法来存储 Long 值。

我喜欢用一个int来表示我的Long值是否为null(你只能存储boolean 数组没有单个 boolean 值)和一个 long 来存储数值(如果不是的话):

写入包裹

int indicator = (aLongObject == null) ? 0 : 1;
long number = (aLongObject == null) ? 0 : aLongObject;
dest.writeInt(indicator);
dest.writeLong(number);

读取包裹

// NOTE: reading must be in the same order as writing
Long aLongObject;
int indicator = in.readInt();
long number = in.readLong();
if(indicator == 0){
aLongObject = null;
}
else{
aLongObject = number;
}

关于android - 在 Android Parcelable 类中读写长对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52542464/

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