如果我有一个名为“EditorialCollection”的对象并且它实现了parcelable,为什么我不能调试像writeToParcel这样的覆盖方法?
protected EditorialCollection(Parcel in) {
super(in);
//break point here:
items = new ArrayList<>();
in.readList(items, CollectionItem.class.getClassLoader());
embedPagination = (EmbedPagination) in.readValue(EmbedPagination.class.getClassLoader());
}
@Override
public int describeContents() {
return 0;
}
public static final Creator<EditorialCollection> CREATOR = new Creator<EditorialCollection>() {
@Override
public EditorialCollection createFromParcel(Parcel in) {
return new EditorialCollection(in);
}
@Override
public EditorialCollection[] newArray(int size) {
return new EditorialCollection[size];
}
};
我无法击中断点,也无法在那里输出记录。我做错了什么或者有人可以解释为什么日志/断点在这里不起作用。
谢谢, 里德
答案 0 :(得分:0)
无法调试宗地对象或可宗地实现对象。
public final class Parcel {
private static final boolean DEBUG_RECYCLE = false;
private static final boolean DEBUG_ARRAY_MAP = false;
private static final String TAG = "Parcel";
.
.
.
}
答案 1 :(得分:0)
您可以使用Parcelables.forceParcel(builder, CREATOR)
方法来测试Parcel类。
但是它仅适用于测试类。
还可以从Parcelables类复制此功能。您可以尝试使用Java代码:
public static <T extends Parcelable> T forceParcel(T parcelable, Creator<T> creator) {
Parcel parcel = Parcel.obtain();
try {
parcelable.writeToParcel(parcel, 0);
parcel.setDataPosition(0);
return creator.createFromParcel(parcel);
} finally {
parcel.recycle();
}
}