[英]How save Stack to SharedPreferences?
在我的Android应用程序中,我有一个用于Strings的自定义堆栈,它扩展了Stack 。 我想将堆栈保存到Sharedpreferences,并从SharedPreferences中检索它。
我知道如何将堆栈转换为ArrayList但我已经读过SharedPreferences只支持集合而不是列表。 那么如何在保留订单的同时将堆栈保存到SP呢? 如何从SharedPreferences中检索它并重建堆栈?
我真的迷失了如何处理这个问题。 任何正确方向的指针都非常受欢迎 - 我不是要求代码转储答案。
这是一个可能的解决方案,
您可以通过序列化将堆栈转换为字符串,并将字符串保存为共享首选项
ByteArrayOutputStream bos = new ByteArrayOutputStream()
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(stack);
oos.flush();
String base64str = Base64.encode(bos.toByteArray(), Base64.DEFAULT);
...
从首选项加载字符串时,将base64字符串解码为字节,并使用ObjectInputStream反序列化堆栈。
按照之前的评论:
您可能必须将Stack
序列化/反序列化为字符串表示形式,然后可以将其存储在SharedPreferences
。
有可能(ab)使用json格式,但它不保证结果中各个元素的排序。 它应该很容易包含每个元素的“位置”,然后您可以在反序列化后使用它来对元素进行排序。
或者,您可以提出自己的结构。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.