我有很多单词(现在大约 200 个),我想每天随机显示而不重复。
在共享偏好中,我存储最后显示的单词的日期,如果今天的日期相同,我会显示上次显示的相同单词,今天是另一天,我需要从池中获取另一个随机单词并显示它。
我试图通过两种方法来实现这一点:
方法一:使用sqlite db
- 在 assets 文件夹中预填充一个 db(db 有一个包含两列的表,words 和 isUsed)
- onCreate(SQLiteDatabase 数据库) 将预填充的数据库复制到 /data
- 使用 sqlite 从 db 获取随机条目并将其 isUsed 计算机更新为 true
- 在共享偏好中刮掉这个词,这样如果用户在同一天再次打开应用程序,然后显示这个词
- 如果我必须更新 db 中的单词然后(150):
- 用新词在资产文件夹中创建另一个数据库
- onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 将此数据库复制到 /data
- 逐行复制原始数据库中的每个单词,保持 isUsed 列不变
我可以在 oncreate 中使用 SQL 语句插入 200 个单词,而不是使用预填充的 db,然后在 onUpgrade 中使用 sql 语句更新其他 150 个单词。
方法 2:使用共享首选项
- 用来节省200字
- 创建一个随机数最多为 200 的字符串并将其保存在共享首选项中
- 每天弹出一个随机数并显示带有该索引的单词。如果是同一天,则不要弹出但显示最后一个字
- 如果我必须更新单词(150):
- 检查单词数量增加了多少,并以随机顺序生成这些增加的数字,并将其洗牌回原始随机字符串数组
所以我的问题是我觉得这些算法都不够好。有没有更好的方法来实现这一点,如果没有,我应该使用方法 1、方法 1 但没有预填充的数据库或方法 2?