SharedPreference的内容会保留一份缓存在HashMap中,所以不要保存大数据,否则会增加GC频率;
apply方法在QueuedWork.waitForFinish方法执行时,才将数据保存到文件中,而此方法由ActivityThread执行handleStopActivity时触发(Activity即将不可操作时),会阻塞UI线程,可能引起ANR;8.0系统对此做了优化,只写入最后一次提交后的信息。
每次执行edit方法都会生成一个新的EditorImpl对象,尽量使用多次处理,一并提交。
SharedPreference写入磁盘前会先将源文件备份,生成.bak文件,当写入完成后再删除此文件。若进程首次获取SharedPreference对应文件时,发现存在备份文件(.bak),则会将此备份文件重命名变做源文件,丢弃原来的源文件。因此多进程同时使用一份SharedPreference文件时可能造成数据丢失。
2022-04-11