其他分享
首页 > 其他分享> > android-将ProtoBuf对象存储在SharedPreferences中

android-将ProtoBuf对象存储在SharedPreferences中

作者:互联网

我的意思是将ProtoBuf对象存储在SharedPreferences中.协议缓冲区仅允许从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);

标签:protocol-buffers,sharedpreferences,android
来源: https://codeday.me/bug/20191111/2018110.html