在哪里存储应用程序数据?

Where to store app data?

我正在构建相对简单的 app/game,它由任务和子任务组成。应保存用户的进度。用户也有少量设置。

目前应用程序不连接到外部服务,但未来的目标是使用 Facebook 或类似的用户注册并添加与其他用户共享 progressinon/accomplishment 的功能。

我是应用开发新手,不知道该选择哪种数据存储方式。如果我没记错的话,这里有键值集,保存在文件和数据库选项中。

为了快速完成工作甚至可能发布 v.1.0,我想采用最简单的解决方案。所以,我想知道选择键值或保存在文件选项中是否有缺点,切换到基于数据库的保存有多困难?还是我应该从一开始就使用数据库?

感谢您花时间回答这个问题!

-蒂莫

最简单的方法是使用 SharedPreferences. For mor complex things you need to use SQLite(built-in) or some ORMs like Realm or GreenDao。对于在线分数共享,您需要使用上述之一和服务器。 Facebook 允许您只为每个用户存储一个整数,这有时是不够的,而且为了存储该整数,您需要征得用户的额外许可 (publish_actions)。希望这会有所帮助。

我为您推荐SharedPreferences。这是一个 Android 简单 class,将数据存储在键值集中。

代码如下:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

这将初始化您的 SharedPreferences。如果您想 write/change 一个值,请执行以下操作:

SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt("KEY_TO_VALUE", 123);
editor.commit();

您也可以在其中输入其他类型的值,但您需要调用 putStringputBoolean 甚至其他类型。

要读取值,请执行以下操作:

int a = prefs.getInt("KEY_TO_VALUE", 0);

此代码像往常一样需要您的参数 Key 和第二个参数的默认值。

给你的另一个提示是,如果你想在一个普通的应用程序中使用这个简单 UI 有一个叫做 PreferenceScreen 的东西。