Java 在每个试验中将字符串存储为不同的变量
我有一个很奇怪的请求,因为大多数人从未处理过这个问题 每次我的应用程序运行时,我都会得到一个值,比如Java 在每个试验中将字符串存储为不同的变量,java,android,Java,Android,我有一个很奇怪的请求,因为大多数人从未处理过这个问题 每次我的应用程序运行时,我都会得到一个值,比如ScoreActivity.score(其中ScoreActivity是出现该值的活动,而score是实际值)。每次我到达这个特定的活动,比如说ResultActivity,我都需要将ScoreActivity.score存储为一个变量。我已经完成了这项工作 int var1 = ScoreActivity.score 现在,问题来了。我希望每次用户玩这个游戏时,ScoreActivity.sc
ScoreActivity.score
(其中ScoreActivity
是出现该值的活动,而score
是实际值)。每次我到达这个特定的活动,比如说ResultActivity
,我都需要将ScoreActivity.score
存储为一个变量。我已经完成了这项工作
int var1 = ScoreActivity.score
现在,问题来了。我希望每次用户玩这个游戏时,ScoreActivity.score
都存储为不同的变量。假设用户完成游戏,在ScoreActivity
处获得score
,并移动到ResultActivity
页面。我希望此ScoreActivity.score
存储为
int var1 = ScoreActivity.score
int var2 = ScoreActivity.score
但是,下次用户完成游戏并获得分数时,我希望ScoreActivity.score
存储为
int var1 = ScoreActivity.score
int var2 = ScoreActivity.score
此外,我希望var1
中的值保留为第一个ScoreActivity.score。有人知道我会怎么做吗?好吧,用纯Java(在你的应用程序中与Android存储无关,我真的不能说太多,因为到目前为止我从未尝试过这么做),我看到了一些方法
- 首先,如果你知道你会得到多少分数,你可以使用一个简单的数组。每次插入新值时,只需检查到目前为止填充数组的数量
- 另一个解决方案是查看Java集合接口,以及实现它的所有主要类。在这种情况下,你可以很好地利用它们,特别是如果你以后需要排序分数的话李>
- 否则,您可以只使用一个字符串,用一个字符分隔元素,每次添加一个分数。例如:
String scores=score1+“|”+score2+“|”+ScoreActivity.score代码> 您只需使用正则表达式解析文本即可获得正确的信息。当然,这不是最好的顺序内的信息
编辑:正如有人所说,您可以使用数据库存储数据,也可以将其放入文件中。这是第四种解决方案,您可以将数据(加密与否,由您决定)放入一个文件中,稍后再检索。如果您担心应用程序关闭和重新启动,并以某种方式恢复特定活动的分数,您可能需要使用一些持久存储 您的参数有点不清楚,但假设用户通过ScoreActivity进行的每个会话都会生成一个唯一的分数,您希望该分数与特定的活动相关联,您可以将该值存储在SharePreferences中,并在稍后使用特定标识符启动活动时检索该值 此处参考:
因此,您基本上要存储一个KV对,如{“scoreSession1”,10}。听起来您想要一个ArrayList?然后只需要
ArrayList分数
array和scores.add(ScoreActivity.score)
@Uxonith,但在应用程序关闭并重新启动后,如何防止ArrayList
刷新?您需要将分数存储到文件中,或使用database@etherous我在查看共享参考资料
,但我不知道如何调整它以适应我的使用,或者这是否是一个好主意。在适当的时间序列化数据,然后在应用程序再次启动时反序列化。JSON有效。你也可以选择singleton
方法,这样整个应用程序都可以使用它。你认为“SharedReferences”是存储大量分数的方式吗?我认为最好保留偏好,嗯,偏好;至少我不能说我见过像你一样推荐的,你可以用它来做除偏好之外的其他事情。请查看链接,并在标题为“用户首选项”的侧边栏上记下他们的评论。这是一个足够的短期解决方案——如果benz希望将整个历史记录保存在其他地方显示,那么使用不同的数据存储解决方案可能会更好。是的,我读过。我们可以讨论这是否意味着潜在的大量分数。我相信这句话的要点更多的是动态组件,它们会因用户而有所不同,而不是大量的原始数据。你的链接也这么说。