我想要每天随机显示一些单词(现在大约200个)而不重复。
在共享首选项中,我存储最后显示的单词的日期,如果今天的日期相同,我显示上次显示的相同单词,今天是另一天我需要从池中获取另一个随机单词并显示它
我试图通过两种方法实现这一目标:
方法1:使用sqlite db
我可以在oncreate中使用SQL语句插入200个单词,然后在onUpgrade中使用sql语句更新其他150个单词,而不是使用预先填充的数据库。
方法2:使用共享偏好
所以我的问题是我觉得这个算法都不够好。有没有更好的方法来实现这一点,如果不是,我应该采用方法1,方法1,但没有预填充数据库或方法2?
答案 0 :(得分:1)
为什么不在assets
/ onCreate
期间从onUpgrade
中的简单文本文件加载字符串,将它们随机播放并插入数据库?然后,当您需要知道要显示哪个单词时,只需计算应用程序安装的天数(N)并显示第N个单词。
答案 1 :(得分:0)
我觉得方法1 WITH 预填表是最好的选择。这将有助于您提高可扩展性和随机性。
应该避免onCreate中的任何重大任务,因为它会滞后于你的应用程序。如果您需要稍后增加单词数,SQLLite数据库将会很有用。
kriomant建议的方法很好,但是滞后于随机性的自由。我们可以在两个完整周期后预测文本,如果一个人坐下来并尝试它: - )