在Android应用中存储数据的最佳方法是什么?

6

我是Android编程的新手,正在尝试创建一个应用程序,显示预定义的引语、诗歌等。我想知道在应用程序中存储这些字符串的最佳方法是什么?SQLite数据库、XML文件、文本文件?对于云存储有什么建议以及如何在Android应用程序中实现?

提前感谢!


2
最简单的方法是最好的方法。http://developer.android.com/guide/topics/data/data-storage.html 但对于预定义的东西,您不需要除了 XML 资源文件之外的任何东西。 - MaciejGórski
一个SQLite数据库似乎是正确的解决方案。 - Laurent Dezitter
我猜简单的文本文件对你来说就可以了,但如果你想用“正规”的方式,可以使用SQLite。 - Marko Niciforovic
SQLite似乎是最好的选择,你可以在这里找到一个很好的例子(http://docs.huihoo.com/android/3.0/resources/samples/SearchableDictionary/index.html)。它是一个带有自定义搜索和SQLite数据库的可搜索字典... - Zhar
1
如果你的引语和诗歌很大,那么请使用文本文件。为了正确地完成这个任务,在SQLite表中将文件路径与文件名进行映射。 - R9J
2个回答

8

即使有成千上万的字符串,使用Sqlite也感觉完全荒谬。逐行读取纯文本文件并将字符串存储在List或Array中几乎不需要任何时间。将纯文本文件放在/assets中,并像这样加载它:

public List<String> readLines(String filename) throws IOException {
    List<String> lines = new ArrayList<String>();
    AssetManager assets = context.getAssets();
    BufferedReader reader = new BufferedReader(new InputStreamReader(assets.open(filename)));
    while(true) {
        String line = reader.readLine();
        if(line == null) {
            break;
        }
        lines.add(line);
    }
    return lines;
}

或者您可以选择使用JSON(或可能是XML),但纯文本也可以。


我刚看到你的回答,想知道...即使有2万个单词,这是否比将每行复制到SQLite数据库更有效呢? - PsychoMantis
即使有2万个单词,它也应该很快(不确定有多快,但我猜测是毫秒级别,而不是秒级别)。如果证明速度慢,我肯定会先尝试这种方法,然后再寻找其他选项。 - britzl

1
我认为这严重取决于数据量...
对于1-100个字符串,请在应用程序资源中使用xml。 对于更多的字符串,最好的方法(也是最快的)是使用sqlite!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接