恢复后,应用之间的SharedPreferences不会更新

时间:2015-12-13 14:31:44

标签: java android android-studio sharedpreferences

我试图在两个应用之间共享数据(只有1个简单的Long)。 App 2将数据写入他自己的SharedPreferences,然后由app 1访问。由于app 2从app 1中启动,app 1只会暂停。现在app 1读取数据就好了,但是没有更新数据,尽管它确实读取了共享偏好。只有当app 1被销毁并重新创建时,它才会获得更新的值。如何在不破坏的情况下立即更新?这会在app 1的onResume中调用。

Context con = createPackageContext("com.app2.android", 0);
SharedPreferences pref = con.getSharedPreferences(
                    "MyPreferences", Context.MODE_PRIVATE);
data = pref.getLong("data", 0);

1 个答案:

答案 0 :(得分:1)

在从应用1中读取首选项时,请使用Context.MODE_MULTI_PROCESS。这会强制它每次从磁盘读取首选项,并且您将获得更新的值。像这样:

SharedPreferences prefs = mOtherAppContext.getSharedPreferences("profilePref", Context.MODE_MULTI_PROCESS);

此链接的更多信息:http://developer.android.com/reference/android/content/Context.html#MODE_MULTI_PROCESS

虽然我知道,它已被弃用,但我没有找到任何其他方法。任何更好的解决方案都会有所帮助,但就目前而言,这可以解决您的问题。