【问题标题】:Android sharedpreferences in each fragment or bundle from main activity?来自主要活动的每个片段或捆绑包中的Android共享首选项?
【发布时间】:2017-08-25 13:52:55
【问题描述】:

我使用 sharedpreferences 保存了一些数据,例如用户 ID(向 apirest 发出请求),接下来我有一个包含 3 个片段的活动,它们将使用这个 ID。我应该让数据(id)在每个片段中获得 sharedpreference 吗?还是我应该在主要活动中获取SharedPreferences 并使用捆绑传递ID??

我的问题:哪个选项更快并且消耗更少的资源?为什么?

【问题讨论】:

  • 显然从内存(ram)读取比从磁盘读取更快。 SharedPreferences 与 xml 一起使用
  • @an_droid_dev 对不起,我的英语不好,当你提到内存 ram 时,你是指使用 bundle 吗?你推荐哪个选项?能说清楚一点吗?
  • 是的,我的意思是捆绑。 Bundle 不存储到磁盘,而是存储到内存 (ram)。

标签: android android-fragments sharedpreferences bundle


【解决方案1】:

为 SharedPreferences 创建一个单例类

【讨论】:

    【解决方案2】:

    将它作为额外的传递的问题是它可能无法在片段重新创建时恢复。您可能需要通过在 Fragment 销毁自身以重新实例化或任何其他不可预见的事件之前保存值来采取预防措施。

    考虑到这一点,从SharedPreferences 获取 id 是个好主意。读操作不像写操作那么昂贵(这就是为什么会有异步的apply()方法)。

    【讨论】:

    • 那么,您建议我在每个片段中调用 getSharedPreferences 吗?获取ID?
    • @matQ 是的。原因见我的第一段。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    • 2012-09-08
    • 1970-01-01
    • 2015-09-04
    • 2011-08-07
    • 2013-07-23
    相关资源
    最近更新 更多