相关疑难解决方法(0)

Protobuf 流(延迟序列化)API

我们有一个 Android 应用程序,它使用协议缓冲区来存储应用程序数据。数据格式(大致)是单个 protobuf(“容器”),其中包含一个 protobuf(“项目”)列表作为重复字段:

message Container {
    repeated Item item = 1;
}
Run Code Online (Sandbox Code Playgroud)

当我们想要保存对项目的更改时,我们必须重新创建 protobuf 容器,将所有项目添加到其中,然后将其序列化并将其写入文件。

这种方法的问题在于它可能会使保存时使用的内存增加三倍,因为数据必须首先从模型类复制到 protobuf 构建器,然后在 protobuf 序列化时复制到字节数组,所有这些都在将其写出到文件流。

我们想要的是一种创建我们的 protobuf 容器并将其延迟序列化到流的方法,然后简单地将每个 protobuf 项(从我们的模型数据创建)添加到序列化并将其写入流的容器中,而不是保留所有项,直到我们在内存中创建了整个容器。

有没有办法构建 protobuf 并将其懒惰地序列化为流?

如果没有办法正式执行此操作,是否有任何图书馆可以提供帮助?有没有人有任何建议或想法如何以其他方式解决这个问题?使这成为可能的替代数据格式或技术(例如包含 protobufs 的 JSON 或 XML)?

xml android json model protocol-buffers

5
推荐指数
2
解决办法
6112
查看次数

标签 统计

android ×1

json ×1

model ×1

protocol-buffers ×1

xml ×1