【问题标题】:Where to store app data?在哪里存储应用程序数据?
【发布时间】:2017-04-02 07:17:14
【问题描述】:

我正在构建由任务和子任务组成的相对简单的应用程序/游戏。应该保存用户的进度。用户也有少量设置。

目前应用程序不连接到外部服务,但未来的目标是使用 Facebook 或类似的东西进行用户注册,并添加一个与其他用户分享进度/成就的功能。

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

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

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

-蒂莫

【问题讨论】:

  • 主要是基于意见的...您是否检查过官方 android 指南中的“存储选项”主题?
  • Shared Preferences 是你的好选择。
  • 谢谢阿杰!我会试试的。
  • 大量存储选项可供选择:developer.android.com/guide/topics/data/data-storage.html Simples SharedPrefs、文件、sqlite..
  • 我不认为这是一个基于意见的问题,因为我问的是我将来选择错误的方法可能会遇到的问题。显然这个论坛不是问一般类型问题的地方,只允许严格的编码问题:(

标签: android android-studio saving-data


【解决方案1】:

我向您推荐 SharedPreferences。这是一个在 Android 中的简单类,它将您的数据存储在 Key-Value 集中。

代码如下:

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

这会初始化您的 SharedPreferences。如果要写入/更改值,请执行以下操作:

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

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

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

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

这个代码需要像往常一样需要你的参数你的键和第二个参数一个默认值。

给您的另一个提示是,如果您想在具有简单 UI 的普通应用中使用它,可以使用 PreferenceScreen。

【讨论】:

  • 谢谢!我会试试看的。
【解决方案2】:

最简单的方法是使用SharedPreferences。对于更复杂的事情,您需要使用 SQLite(内置)或一些 ORM,如 RealmGreenDao。对于在线分数共享,您需要使用上述之一和服务器。 Facebook 让您只为每个用户存储一个整数,这有时是不够的,而且对于存储该整数,您需要向用户(publish_actions)请求额外的许可。希望这会有所帮助。

【讨论】:

  • 谢谢!这些是有用的 tps。
猜你喜欢
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 2014-12-05
  • 2011-12-20
  • 2013-11-20
  • 2021-05-03
  • 2011-02-15
  • 2019-07-30
相关资源
最近更新 更多