我有一个Array
的整数值。随着时间的推移它会增长。它将具有大约50个值。
我想将数组存储为持久性,因此我考虑将其存储在SharedPreferences
中。
我知道其中不能存储任何复杂类型,但我也听说过将Array
序列化,然后将其存储在SharedPreferences
中。
有人可以给我一个提示甚至更好的示例代码怎么做?
答案 0 :(得分:4)
效率不高,但会完成工作:
SharedPreferences prefs = ...;
final int count = 50;
final String KEY_COUNT = "COUNT";
final String KEY_VAL_PREFIX = "VAL_";
int values[] = new int[count];
/*
* ... put some stuff in values[] ...
*/
final Editor sped = prefs.edit();
sped.putInt(KEY_COUNT, count);
for (int i = 0; i < count; i++)
{
sped.putInt(KEY_VAL_PREFIX + i, values[i]);
}
sped.commit();
然后,您可以通过从prefs获取KEY_COUNT值,然后使用values2[i] = getInt(KEY_VAL_PREFIX + i, 0)
调用填充空数组来检索这些值。
答案 1 :(得分:1)
您可以使用ObjectSerializer来执行此操作。以下是关于如何做的SO讨论。Store Shared preferences
答案 2 :(得分:1)
我会将您的数组转换为由逗号分隔的值字符串。然后将字符串存储为单个键值对。
然后,当您想要提取数组时,只需使用split函数将字符串拆分为基于逗号分隔符的数组元素。