Protocol Buffers を使用してアプリケーション データを保存する Android アプリがあります。データ形式 (大まかに) は、protobuf (「アイテム」) のリストを繰り返しフィールドとして含む単一の protobuf (「コンテナー」) です。
message Container {
repeated Item item = 1;
}
アイテムへの変更を保存する場合は、protobuf コンテナーを再作成し、すべてのアイテムを追加してから、シリアル化してファイルに書き込む必要があります。
このアプローチの問題は、保存時に使用されるメモリが 3 倍になる可能性があることです。これは、データを最初にモデル クラスから protobuf ビルダーにコピーし、次に protobuf をシリアル化するときにバイト配列にコピーする必要があるためです。ファイルストリーム。
私たちが望むのは、protobuf コンテナーを作成し、それを遅延してストリームにシリアル化してから、(モデル データから作成された) 各 protobuf アイテムをコンテナーに追加するだけで、シリアル化してストリームに書き込む方法です。メモリ内にコンテナ全体を作成するまで、メモリ内のアイテム。
protobuf を作成し、遅延してストリームにシリアル化する方法はありますか?
これを公式に行う方法がない場合、役立つライブラリはありますか? これを他の方法で解決するための提案やアイデアはありますか? これを可能にする代替データ形式またはテクノロジー (protobufs を含む JSON または XML など) はありますか?