HarmonyOS-Sequenceable(序列化)中,URI类型如何实现读取序列化对象
请问HarmonyOS-Sequenceable(序列化)中,URI类型如何实现读取序列化对象。
使用Android-Parcelable(序列化) URI类型反序列化实现方式:
protected Image(Parcel in) {
this.path = in.readString();
this.time = in.readLong();
this.name = in.readString();
this.mimeType = in.readString();
this.uri = in.readParcelable(Uri.class.getClassLoader());
}
HarmonyOS-Parcel中对应的readSequenceable返回布尔类型,无法实现读取序列化对象
HarmonyOS
Parcel
Sequenceable
序列化
readParcelable
赞
收藏 1
回答 3
已解决
相关问题
求大佬告知如何序列化对象
632浏览 • 1回复 待解决
自定义类如何实现序列化
1872浏览 • 1回复 待解决
把一个自定义类型的对象存储到文件中,自定义对象是否支持序列化,后者如何将一个自定义对象序列化
1533浏览 • 1回复 待解决
有谁知道 task 参数无法序列化
1735浏览 • 1回复 待解决
HarmonyOS JSON中的map结构如何序列化
367浏览 • 1回复 待解决
HarmonyOS 在进行json序列化/反序列化时,是否支持为字段设置别名?
238浏览 • 1回复 待解决
JSON反序列化,如何重命名字段?
145浏览 • 1回复 待解决
跨设备迁移FA并传递序列化实体类无反应
4857浏览 • 3回复 待解决
HarmonyOS map反序列化后,调用map.has报错
422浏览 • 1回复 待解决
HarmonyOS 如何实现一个将任意object对象序列化为string的函数?
418浏览 • 1回复 待解决
HarmonyOS 序列化数据大小超过限制,有什么解决办法?
53浏览 • 1回复 待解决
在使用序列化方式实现线程间JS对象的数据通信时,是否会导致性能问题。
322浏览 • 1回复 待解决
HarmonyOS 对于json字符串转具体类对象的方案(反序列化操作)
156浏览 • 1回复 待解决
#鸿蒙学习大百科#Actor模型的线程间序列化传输对象有几种?
158浏览 • 1回复 待解决
preferences.putSync(key, value);保存数据后并没有永久序列化到本地的原因?
248浏览 • 1回复 待解决
线程间JS对象通过序列化方式进行数据通信,是否存在性能问题
1855浏览 • 1回复 待解决
通过 external 或者 wrap 关联了 native 对象的 object,序列化之后传输到其他线程使用
1596浏览 • 1回复 待解决
Sendable 序列化,对象分配在各自的虚拟机内存空间,存不存在竞争访问
1714浏览 • 2回复 待解决
#鸿蒙学习大百科#@ObservedV2的类实例目前支持使用JSON.stringify进行序列化吗?
178浏览 • 0回复 待解决
HarmonyOS prop传参是不是序列化传参,C++层可以拿到js引用,为什么还要转成字符串,支持多线程内存共享吗
270浏览 • 1回复 待解决
HarmonyOS taskpool中new 对象报错未初始化
388浏览 • 1回复 待解决
卡片开发中如何实现数据持久化
1989浏览 • 1回复 待解决
PersistentStorage如何持久化一个对象?
2744浏览 • 1回复 待解决
在HarmonyOS开发中,如何实现全局初始化操作?
66浏览 • 0回复 待解决
HarmonyOS 如何将PhotoViewPicker返回的uri封装成File类型对象?
124浏览 • 1回复 待解决
可以调用方法readSerializable(),如下图所示:
这段代码运行OK,可以正确传递Student对象到下一个ability。
关键点在红色代码。
import ohos.utils.Parcel;
import ohos.utils.Sequenceable;
import ohos.utils.net.Uri;
public class Student implements Sequenceable {
private int number;
private String name;
private Uri uri;
public Student() {
}
public Student(int number, String name, Uri uri) {
this.number = number;
this.name = name;
this.uri = uri;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Uri getUri() {
return uri;
}
public void setUri(Uri uri) {
this.uri = uri;
}
//上面是传统的实体类的构造函数和getter、setter
//下面是序列化的核心
//向包裹中写入数据,包裹可以理解为一块内存区
public boolean marshalling(Parcel out) {
out.writeTypedSequenceable(this.uri); //注意Uri类型的写法和普通数据类型有所不同
out.writeInt(this.number);
out.writeString(this.name);
return true;
}
//从包裹中读取数据
public boolean unmarshalling(Parcel in) {
this.uri = in.createSequenceable(Uri.class.getClassLoader());
this.number = in.readInt();
this.name = in.readString();
return true; //注意Uri类型的写法和普通数据类型有所不同
}
//序列化对象的内部构造器,必须实现
public static final Sequenceable.Producer PRODUCER = new Producer() {
public Student createFromParcel(Parcel in) { //从包裹中获取数据构造对象
// Initialize an instance first, then do customized unmarshlling.
Student instance = new Student();
instance.unmarshalling(in);
return instance;
} //必须实现Producer
};
}
Boolean b= parcel.readSequenceable(this.uri);
采用这个读取即可,Uri类也是实现了Sequenceable接口的,而readSequenceable方法需要接收一个Sequenceable类型的参数
实现序列化的操作必须要实现一个关键的Sequenceable的内部接口构造器Sequenceable.Producer,如下