我试图在两个应用之间共享数据(只有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);
答案 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
虽然我知道,它已被弃用,但我没有找到任何其他方法。任何更好的解决方案都会有所帮助,但就目前而言,这可以解决您的问题。