我正在构建一个教英语单词的应用程序。该应用程序的试用版将包含40个单词,完整版将包含大约2000个单词。我将这两个作为资源文件夹中的单独数据库保存,当用户首次下载应用程序时,它将复制试用数据库并使用它。在用户购买完整版本后,应用程序将使用完整版本替换旧数据库。当用户成为专业人士时,应用程序将在每个单词上保留用户分数,因此我需要数据库站在原处,并在完成后保持不变。
这是我解决问题的基本方法:
boolean fullVersionCopied = false;
if(purchase != true && database doesn't exists)
Copy the trial database from the assets folder.
else(purchase == true && !fullVersionCopied){
try{
Copy the full version database
fullVersionCopied = true;
}catch(Exception e){
fullVersionCopied = false;
}
}
现在我有几个问题。这是一个做我想做的好方法还是有更好的方法来做到这一点?
应用程序每次都会生成一个唯一的随机int,并使用int通过其id号查找单词。我之前从未使用过数据库。在2000个其他行中找到一行需要花费大量时间吗?我将尝试在不同的主题中进行此搜索,但是我应该将这么大的数据库划分为较小的数据块以便为我的应用程序提供速度吗?
感谢您的回答。
答案 0 :(得分:0)
这是一个很好的方法吗?
到目前为止,您只需要为您的应用创建一个数据库,因为您可以限制所提取的行数。在你的情况下,使用2个独立的数据库没有任何实际的优势,它只会在以后的维护中增加一些麻烦。
以下是限制
的示例查询SELECT * FROM wordstable LIMIT 40
在其他2000行中找到一行需要花费大量时间吗?
有许多方法可以克服大量的复杂性,其中一种方便的方法是在CursorLoader的帮助下,它在场景后面的单独线程中处理查询。