2
我的意思是在SharedPreferences
中存儲ProtoBuf
對象。 Protocol Buffers
只允許解析ByteString
或Byte Array
。但支持SharedPreferences
。我想知道是否有辦法做到這一點,而不必創建另一個可序列化的模型並首先映射到它。在SharedPreferences中存儲ProtoBuf對象
我試過這種方法,但我得到InvalidProtocolBufferException
:
public static void setProtoData(ProtoData data) {
Prefs.putString(Constants.SHARED_PREF_PROTO_DATA, String.valueOf(data.toByteString()));
}
public static ProtoData getProtoData() {
String str = Prefs.getString(Constants.SHARED_PREF_PROTO_DATA, null);
ProtoData data = null;
try {
data = ProtoData.parseFrom(ByteString.copyFromUtf8(str));
} catch (InvalidProtocolBufferException e) {
e.printStackTrace();
}
return data;
}