Android 从SharedReferences文件X-Application读取旧值
我正在创建并写入SharedReferences文件,以存储来自一个应用程序的配置信息,如下所示:Android 从SharedReferences文件X-Application读取旧值,android,sharedpreferences,Android,Sharedpreferences,我正在创建并写入SharedReferences文件,以存储来自一个应用程序的配置信息,如下所示: public void setCustomAsync (. . . final Context context . . .) { if (prefs == null || editor == null) { prefs = context.getSharedPreferences("prefs", Context.MODE_WORLD_READABLE + Context
public void setCustomAsync (. . . final Context context . . .) {
if (prefs == null || editor == null) {
prefs = context.getSharedPreferences("prefs", Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);
editor = prefs.edit();
}
editor.putString("Custom", info); // This may be changing a previously set value
editor.apply();
// Creating backups of the preferences file
execCommand(copyToBackup);
execCommand(mainFixPerm);
execCommand(bakFixPerm);
activity.finish();
}
public void execCommand (String[] arg0) {
try {
final Process pr = Runtime.getRuntime().exec(arg0);
final int retval = pr.waitFor();
if (retval != 0) { Log.d("ERROR:", String.valueOf(retval)); }
} catch (Exception e) {}
}
我正在从另一个应用程序中阅读该信息:
private static String getCustom (final Context appContext) throws NameNotFoundException {
context = appContext.createPackageContext("com.example.settings", 0);
prefs = context.getSharedPreferences("prefs", Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);
return prefs.getString("Custom", EMPTY);
}
我的问题不是无法获取文件,而是第二个应用程序读取的值不是最新的
调试第一个应用程序后,我可以看到将新配置保存到文件中工作正常,但只有在第二个应用程序重新启动时,它才会显示更新的配置。否则,它将继续读取旧值
现在我在阅读有关SharedReferences的文章时发现
应用程序必须将从各种get方法返回的对象视为不可变的
但每次我在第二个应用程序中读取文件中的值时,我都会重述prefs,所以我会将其作为新的内容拉进来,对吗?我不确定这是否是一个问题,以及如何绕过这一方面
谢谢大家!
注意:我发布的代码是根据我的实际应用程序改写的,只保留与问题相关的部分。我需要在其他两个需求之上添加Context.MODE\u MULTI\u流程。它仅在较新的API中可用