如果在另一个进程中编辑 sharedPreferences 将不会更新
Posted
技术标签:
【中文标题】如果在另一个进程中编辑 sharedPreferences 将不会更新【英文标题】:sharedPreferences wont update if edited in another process 【发布时间】:2016-06-12 10:56:31 【问题描述】:我有一个统一活动,它在我的应用程序之外的另一个进程中启动:
<activity
android:name=".UnityActivity"
android:process=":UnityKillsMe"/>
我保存了用this question 加密的SharedPreferences
(以防这会影响我的问题,我不知道)。
现在如果我想在process=":UnityKillsMe"
中编辑sharedPreference,在mainProcess
中无法访问编辑,它只需要SharedPreferences
的旧版本。直到我杀死 mainProcess
并再次启动应用程序。如果我不杀死mainProcess
,并编辑SharedPreferences
,而它们已经在process=":UnityKillsMe"
中进行了编辑,那么编辑将被覆盖并丢失。
如何在主进程中刷新SharedPreferences
?
【问题讨论】:
另一个进程? unity是完全单线程的。您不应以任何方式使用或参与 Android 级别的其他进程。没有任何理由你需要做任何这样的事情来制作一个简单的视频游戏。也许您应该说明您要做什么? 感谢@JoeBlow 的帮助。这个问题更多的是关于java而不是统一,我从我在android上的Java应用程序启动我的untiyactivity(我的inapp视频游戏)。但我用下面的答案修复了它。 亲爱的伊曼纽尔。很公平,我明白你的意思。将统一项目视为 Android 上的单独活动是一个巨大的 PITA。我希望它不会给您带来太多麻烦! 【参考方案1】:SharedPreferences
在 Android 中的当前实现不是进程安全的。
来自docs:
注意:目前这个类不支持跨多个使用 过程。这将在稍后添加。
问题是您真的在您的应用程序中需要多个进程吗?
如果你真的这样做,我建议你看看Tray,或者考虑一些其他形式的持久存储,比如数据库。
也请查看this answer。
【讨论】:
以上是关于如果在另一个进程中编辑 sharedPreferences 将不会更新的主要内容,如果未能解决你的问题,请参考以下文章
Android中SharedPreference多进程数据共享出错
android中SharedPreferences 读取不到数据的问题