Ich beabsichtige, ein ProtoBuf
Objekt in SharedPreferences
zu speichern. Protocol Buffers
erlauben nur das Parsen von ByteString
oder Byte Array
. Aber SharedPreferences
unterstützen weder. Ich habe mich gefragt, ob es einen Weg gibt, dies zu tun, ohne ein weiteres serialisierbares Modell erstellen und es zuerst zuordnen zu müssen.Store ProtoBuf-Objekt in SharedPreferences
habe ich versucht, auf diese Weise, aber ich bekomme 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;
}