rt,在2.3以后,普通方法创建的Sharedpreference(一下简称sp)是进程不安全的,举个栗子:
一个app有两个process:一个main,一个second,两者同时运行,并对sp进行修改操作:
main中写入key=one,value=a,second写入key=two,value=b。
你将看到这样的结果:sp中只有one或者two,
如果最后一个执行写入操作的是main,则sp中只有a;反之,如果最后执行的是second,则sp中只有b。
原因就是sp在加载完以后,将被缓存到内存中,任何修改sp的操作,确实会导致sp被写入文件,但在下一次打开sp的时候并不会重新读取文件。
由此导致main中的sp只有a,且只会向sp文件中写入a,second则只写入b。
解决办法:
创建sp的时候加flag:
Context.getSharedPreferences(SPNAME, Context.MODE_MULTI_PROCESS );
最好的终极解决办法是用ContentProvider来实现对sp的读写,所有进程都通过其进行数据读取和写入