Class.this指类本身,多在线程或异步中使用
SharedPreferences类:
1. OnSharedPreferenceChangeListener接口
2. Editor接口:
a. putString方法,在commit和apply方法被调用时回调
b. 一大堆操作类接口
3. SharedPreferencesImpl实现SharedPreferences接口
a. 通过一个Object来锁定
b. 通过一个WeakHashMap来挂载一系列监听
c. 包内可见
d. 创建对象后,会先将文件加.bak进行备份
e. 获取SharedPreferencesImpl.this锁之后,会删除原文件,将bak文件还原回来,同时检查文件权限
f. 使用BufferedInputStream读取,每次16Kb,将xml中内容放到内存的一个map中
g. 通知其他线程
h. 如果遇到非预期的更改,则重新加载
i. 通过当前修改时间(mtime)和大小(statsize)和预存的状态来判断文件是否改变
j. commit先会放在内存中,然后写sd卡
k. 在读写操作中各种加锁,保证了外部的线程安全
l. 每次commit,实际上都是new一个FileOutPutStream来做的,所以不算太频繁的写操作,其实还好