Android内存值对vs. SQLite



如果我在应用程序的动态行为期间需要它们,那么存储大量值对的最佳方法是什么?在内存(如LinkedHashMap)或SQLite DB?我有超过4000行的personID和personName,我需要一个EditText和一个微调器。如果我在EditText中输入正确的personID, Spinner应该跳转到正确的personName,但是Spinner也应该包含所有的personsNames。

目前我已经通过以下方式实现了"内存"解决方案,因为一个简单的数组不能大于64k。代码当然生成了。我也尝试过用XML定义数组,但它也有同样的限制。

public enum CompPeople {
    INSTANCE;
    public LinkedHashMap<Short, String> peopleIDs = new LinkedHashMap<Short, String>();
    public void initialize() {
        peopleIDs = new LinkedHashMap<Short, String>();
        setPeople1();
        setPeople2();
        setPeople3();
        setPeople4();
    }
    public void setPeople1() {
        peopleIDs.put(new Short((short) 1011), "John Doe");
        peopleIDs.put(new Short((short) 1012), "Jack Knight");
        peopleIDs.put(new Short((short) 1013), "Sue Doe");
        ...
    }
    public void setPeople2() {
        ...
    }
    public void setPeople3() {
        ...
    }
    public void setPeople4() {
        ...
    }
}

如果SQLite的方式会更好,有没有更好的解决方案来初始化数据库在第一次运行的应用程序比这里描述的一个?:http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/

提前感谢!

需要考虑的几点:

  1. 在决定是数据库结构还是内存结构时,首先要考虑的是持久性需求。如果您需要在应用程序退出后保留数据,那么必须使用某种持久化存储,要么是数据库,要么是平面文件。

  2. 不管怎么做,在数据库中持久化对象会变得更慢,而且可能更麻烦。如果您可以将对象舒适地装入内存,那么使用数据库将只是不必要的额外复杂性。

  3. 4000行通常不是那么大,尽管它可能在嵌入式设备的上下文中,如果行大小足够高,例如由于存储blobs。您希望每一行占用多少空间?因为如果我们谈论的是3-4 MB,那么可能最好使用内存结构…

最新更新