问题
当我需要在不同的AP中引用同一个SharedPreference时,我发现单单在创建时声明MODE_WORLD_READABLE和MODE_WORLD_READABLE权限是不够的。那么SharedPreference这种轻量级存储的跨应用共享是否可行?
解决
最后在google sdk文档中,getSharedPreferences这个函数中对第二个参数mode的解释中,发现了这么一段话:
The bit MODE_MULTI_PROCESS
can also be used if multiple processes are mutating the same SharedPreferences file. MODE_MULTI_PROCESS
is always on in apps targetting Gingerbread (Android 2.3) and below, and off by default in later versions.
这就是问题的所在,2.3以下的版本中多进程访问都是默认为开启的,然而在后续的版本中就不再如此,害我以为在4.0中不支持这个功能了!所以在创建SharedPreferences时带上MODE_MULTI_PROCESS就行了。
SharedPreferences prefs = getSharedPreferences("my_prefs", MODE_WORLD_READABLE | MODE_MULTI_PROCESS);