dor*_*ors 3 android process sharedpreferences
在Android文档没有说明任何有关,而MODE_MULTI_PROCESS是安全的(安全明智)与否.
那么,这样安全吗?有没有理由不使用它?
此标志与安全性无关,但与访问可靠性无关.效率较低但尝试避免由访问底层文件的多个进程(来自同一应用程序)引起的问题.如果您不编写多进程应用程序,则不需要它.如果这样做,文档建议使用其他进程间通信.出于性能原因而不是安全性,文档建议不要使用它.
所以MODE_PRIVATE/ MODE_WORLD_READABLE/ MODE_WORLD_WRITEABLE一方面和MODE_MULTI_PROCESS另一方面是正交的标志.如果您打开SharedPreferences使用:
MODE_PRIVATE - >安全MODE_WORLD_READABLE - >不安全MODE_PRIVATE | MODE_MULTI_PROCESS - >安全MODE_WORLD_READABLE | MODE_MULTI_PROCESS - >不安全并且MODE_PRIVATE值为0:MODE_MULTI_PROCESS相当于MODE_PRIVATE | MODE_MULTI_PROCESS(即安全)
实际上,在源类中唯一的用途MODE_MULTI_PROCESS是在ContextImpl类中:
@Override
public SharedPreferences getSharedPreferences(String name, int mode) {
SharedPreferencesImpl sp;
synchronized (sSharedPrefs) {
sp = sSharedPrefs.get(name);
if (sp == null) {
File prefsFile = getSharedPrefsFile(name);
sp = new SharedPreferencesImpl(prefsFile, mode);
sSharedPrefs.put(name, sp);
return sp;
}
}
if ((mode & Context.MODE_MULTI_PROCESS) != 0 ||
getApplicationInfo().targetSdkVersion < android.os.Build.VERSION_CODES.HONEYCOMB) {
// If somebody else (some other process) changed the prefs
// file behind our back, we reload it. This has been the
// historical (if undocumented) behavior.
sp.startReloadIfChangedUnexpectedly();
}
return sp;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3095 次 |
| 最近记录: |