将ProtoBuf对象存储在SharedPreferences中

Abdul Wasae |

我的意思是将ProtoBuf对象存储在中SharedPreferencesProtocol Buffers仅允许从ByteString进行解析Byte Array但是SharedPreferences都不支持。我想知道是否有一种方法可以不必创建另一个可序列化模型并首先映射到它。

我试过这种方式,但我得到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;
}
但丁

您可以使用android.util.Base64将字节数组保存在SharedPreferences中。

为了保存:

String saveThis = Base64.encodeToString(array, Base64.DEFAULT);

对于加载:

byte[] array = Base64.decode(stringFromSharedPrefs, Base64.DEFAULT);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章