【问题标题】:Shared Pref Data in App1 should fetch the latest data I,ve stored in other App?App1 中的共享首选项数据应该获取我存储在其他应用程序中的最新数据吗?
【发布时间】:2016-03-02 15:16:53
【问题描述】:

我有两个应用程序,App1 和 App2。 我在 App2 中保存一些数据并在 App1 中访问。因此,当我使用 backpress 从 App2 回到 App1 时,共享的首选项数据将不会刷新我从 App2 访问的数据。 从后台删除 App1 并返回同一页面即可完成工作。

那么,我应该怎么做才能让 App1 中的 Shared Pref Data 获取我存储在 App2 中的最新数据?

【问题讨论】:

  • @HRaval 如果首选项是 WORLD_READABLE,则应用之间的共享将起作用。看看这个帖子:stackoverflow.com/questions/6030321/…
  • 我可以在两个应用程序之间共享数据,但是当我按下并转到 app1 时,共享首选项应该刷新并获取我存储在 App2 中的最新数据。
  • 您在哪里访问 App1 中的 SharedPreference?还有你是如何从 App1 启动 App2 的?
  • @sankyjain:按下 App1 中的按钮后,我将从 App1 转到 App2。在 App1 中,我将一些值存储在 Shared pref 和 OnBackPress 中,然后返回 App1。然后在 App1 中,我正在访问我存储在 App2 的共享首选项中的数据。但在 App1 从后台移除并重新启动 App1 之前,更改不会反映在 App1 中。

标签: java android sharedpreferences


【解决方案1】:

将数据写入共享首选项时,请使用 edit.apply() 而不是 edit.commit(),因为 edit.apply 将立即更新首选项对象并异步保存新值,因此允许您读取最新值.

【讨论】:

  • 它不工作。也许它会立即更新 App2 中的共享首选项,但是当我在 BackPress 上从 App2 转到 App1 时,我需要更改以立即反映在 App1 中。
  • 能否分享一下你在这两个地方的代码,对调试很有帮助。
  • 这里有错误,把edit.commit()换成edit.apply()就行了。这应该是您的代码: SharedPreferences prefs = getSharedPreferences("demopref",Context.MODE_PRIVATE); SharedPreferences.Editor 编辑器 =prefs.edit(); editor.putString("demostring", strShareValue); editor.commit();
  • 是的,我尝试了 edit.apply,但它也不起作用。实际上问题是我需要从后台删除 App1 并重新启动以进行更改以反映!
【解决方案2】:

您无法更改其他人的 sharePreference 数据,您可以使用 ContentProviders 这些是在应用程序之间共享数据的好方法,而在应用程序内您可以轻松访问(sharePreference 的)存储数据,从 This Link 获取更多详细信息

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-14
    • 2011-08-27
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    • 2020-09-20
    相关资源
    最近更新 更多