多进程场景下各用独立SharedPreferences文件是否安全?
嘿,这个场景其实非常典型,答案很明确:只要你确保两个进程使用完全不同的文件名(也就是getSharedPreferences的name参数完全不重复),这种用法是安全的。下面给你拆解下原因和注意事项:
- 文件完全隔离:每个
name对应一个独立的XML文件,存储在应用的/data/data/[包名]/shared_prefs/目录下,文件名就是[name].xml。两个进程操作的是完全不同的文件,彼此的读写操作不会交叉干扰,Android的文件系统会保证不同文件的访问隔离。 - 实例独立无冲突:每个进程会创建自己的
SharedPreferences实例,针对各自的文件进行读写。因为没有共享同一个文件,所以不存在多进程并发读写同一文件的风险——而那种跨进程共享同一SharedPreferences文件的场景,才会出现数据同步延迟、甚至文件损坏的问题。 - MODE参数的作用:这里你用到的
mode参数(比如MODE_PRIVATE)主要是限制其他外部应用访问你的SharedPreferences文件。对同一应用内的不同进程来说,只要文件名不同,就算不用MODE_PRIVATE,进程之间也访问不到对方的文件(当然还是推荐用MODE_PRIVATE来保证外部安全性)。
需要额外提个醒:一定要严格保证两个进程的name参数完全不同,比如一个叫main_process_prefs,另一个叫second_process_prefs,别写错或者复用了同一个名字——一旦重名,就会回到多进程共享同一文件的风险场景里,那时候就不安全了。
内容的提问来源于stack exchange,提问作者user221256
相关产品推荐
相关产品推荐

