我有两个应用程序。
第一个应用拥有apply
,应用会通过MODE_WORLD_READABLE
方法向其保存一些数据。
第二个应用程序从第一个应用程序中读取首选项(第一个应用程序使用SharedPreferences
保存首选项)并使用它们自行配置。
就是这样。
有一个偏好键" x"。
这两个应用程序同时运行
第一个应用程序更改了与" x"
匹配的值
而第二个应用程序没有做任何改变
重新启动第二个应用程序后,它确实会进行更改。
为什么会出现这个问题?
每当我需要从第一个应用程序中读取某些值时,是否必须更新$data = [];
foreach($input as $entry) {
if(empty($data[$entry->type])) {
$data[$entry->type] = 0;
}else{
$data[$entry->type] += $entry->value;
}
}
引用?
答案 0 :(得分:0)
SharedPreferences.apply()在线程(异步)中完成工作,因此可能需要一些时间。因此,在第二次打开它之后你可以看到变化。如果你想立即使用.commit()代替。但它会在UI线程中完成工作,因此不建议
答案 1 :(得分:0)
尝试使用MODE_MULTI_PROCESS而不是MODE_WORLD_READABLE
MODE_MULTI_PROCESS:即使已经加载了共享首选项实例,此方法也会检查首选项的修改