我应该如何存储数据(用于应用内使用)?

时间:2017-09-07 15:11:08

标签: java android sqlite

我目前正在构建一个应用程序,该应用程序将预先保存用于应用内使用的数据,但我不确定应该如何在应用程序中存储我的数据,并且会喜欢一些帮助和想法在那:

这些是主要的"规格"和我的数据的重要信息:

  1. 数据由我(开发人员)定义,并且不受用户的任何影响(这意味着数据是静态的 - 除非应用程序有新的更新,否则无需在任何时间更新数据)。
  2. 数据将分为不同的项目。应用程序中将有大约50-200个项目。
  3. 每个项目都有信息(即名称,类型等),包括地图矢量和图像的资源。
  4. 这些项目将加载到ListView
  5. 可以选择按一个特定属性(在ListView中)过滤项目。
  6. 由于所有数据都是由我生成的,而且其中一些数据很大,我希望尽可能轻松地编写"编写"数据。
  7. 我在想两个选择:

    1. 为项目定义Java类,并使用存储在列表中的所有项目填充静态类。
    2. 使用SQLite数据库,但这似乎太过于过度"过度使用#34;因为数据是静态的。
    3. 还有哪些其他选择以及它们之间的权衡取舍?

3 个答案:

答案 0 :(得分:0)

对于文本数据,您有以下几种选择:

  1. XML字符串和字符串数组资源。
  2. SQLite数据库。
  3. 平面文件。
  4. Java代码中的
  5. final static String变量。
  6. SharedPreferences。
  7. 选项4通常用于设置,而不是大量数据。其他选择都有其权衡,似乎是合理的解决方案。

    对于数字资源,例如图片,您至少有两个选项:

    1. 使用您的应用在Android Studio项目的resraw文件夹下分发所有内容。

    2. 提供资源作为下载。

    3. 对于大型资源,第二种方法是首选方法,因为使用您的应用程序打包它们会使初始下载非常大。如果您可以单独下载资源,则可以根据需要下载资源,而不是在安装过程中一次性下载。

答案 1 :(得分:-1)

如果要存储文本数据,则应在资源中使用字符串数组

答案 2 :(得分:-1)

使用SQLite。它不会显着降低应用程序的效率(这是你真正不应该担心的)。 SQLite已经足够轻 - 特别是如果你只使用200个项目。

查看https://github.com/jgilfelt/android-sqlite-asset-helper预加载的数据库并创建一个单例数据库处理程序类。您可以使用此方法创建listview或recyclerview来填充数据。