我正在尝试创建一个系统来保存已在我的应用程序中播放的关卡列表。
我一直在使用Editor和SharedPreferences在手机上存储信息。
但是现在我有一个int保存列表
我一直想用
找出一些东西 DataOutputStream out;
//Size
int resultSize = results.size();
out.writeInt(resultSize);
//All the levels ID
for (int idx = 0; idx < resultSize; idx++){
//l().debug("Lvl ID: "+results.get(idx));
out.writeInt(results.get(idx));
}
但后来我不知道如何在共享偏好中存储它。
我也关注大小,这个ID列表可能会变得非常大,所以我想优化存储的数量。(因此DataStream)
任何想法
杰森
答案 0 :(得分:1)
您可以遍历列表并从整数构造逗号分隔的字符串。例如。 “1,2,15..etc”,然后将此字符串写入SharedPreferences。当你把它读回去时,你显然必须对其进行标记。
答案 1 :(得分:0)
“真的很大”究竟有多大?考虑到这是一个人类玩的水平列表,我将断言它对于智能手机可以处理的内容来说“很小”。虽然,我个人建议将其放入“已完成”级别的SQLite表中,以便于查询信息。
答案 2 :(得分:0)
我认为你不需要最有效的方法。这些数据很小,与你所知道的一致。选择简单易懂的东西,易于调试。
新行上每个级别为int的平面文件。你不能比这简单得多。当然,它比最有效的方式更大,但是从损坏的文件中恢复更容易,更容易调试。
答案 3 :(得分:0)
二进制流是如何保存整数的最有效方法。如果你有很多数字(兆字节),请使用DataOutputStream与ZipOutputStream结合使用。