【问题标题】:Load preferences from DB从数据库加载首选项
【发布时间】:2015-11-26 10:23:03
【问题描述】:

我为每个实体设置了一组偏好片段(铃声、阈值...)。所以我宁愿从 DB (ContentProvider) 加载相关内容,而不是从 SharedPrefences 加载。 做这个的最好方式是什么? 有没有办法拦截从/到 SharedPreferences 的加载/保存过程?

如果可能,我想避免自定义布局,因为内置的首选项功能更快更容易实现。

【问题讨论】:

  • 我不明白你为什么要使用数据库而不是 SharedPreferences,你能澄清一下吗?
  • 因为我有一个从数据库加载的实体列表(并通过网络同步)。并且需要为每个实体单独设置首选项。
  • 如果需要为每个实体单独设置首选项并通过 Internet 发送,那么您需要在数据库架构中为这些设置。
  • 您到底想在数据库中存储什么?用户选择的值或用户可以从中选择的可能选项?
  • 在您的自定义Preference 中覆盖SharedPreferences getSharedPreferences(),以便它返回您自己的SharedPreferences 接口实现

标签: android sharedpreferences android-sharedpreferences


【解决方案1】:

从移动 UX(用户体验)的角度来看,这是一个非常糟糕的主意。由于与简单的键值存储访问相比,数据库访问会产生更大的 UI 延迟,因此用户体验将受到很大影响。 采用标准方法,并编写一个方便的包装类,而不是在其中传递可以包含整个偏好的对象。

【讨论】:

    【解决方案2】:

    这个问题的目的是尽可能模仿内置偏好框架的外观和感觉。

    感谢@pskink 指出如何通过实现您自己的 SharedPreferences 来做到这一点!

    我最终将this proposal 作为自定义布局的起点,因为我需要一些开箱即用的控件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-30
      • 1970-01-01
      • 2011-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-21
      相关资源
      最近更新 更多