简述SharedPreference的apply和commit的区别 ?
参考答案:
SharedPreference的apply和commit方法的主要区别体现在以下几个方面:
- 返回值与提交成功验证:commit方法会返回一个boolean值,用来验证修改是否成功提交。而apply方法则没有返回值,它不会提供修改是否成功的直接反馈。
- 同步性与线程处理:commit方法是同步的,它会直接将修改内容提交到硬盘,这个过程可能会造成线程堵塞。而apply方法则是异步的,它首先会将修改内容提交到内存,然后开启一个异步线程将修改内容提交到硬盘。这种异步处理的方式意味着,即使提交失败,也不会立即收到任何通知。
- 效率与适用场景:由于commit是同步写入磁盘,所以在主线程中使用时需要考虑是否会出现ANR(Application Not Responding)问题。而apply由于是异步写入,效率相对较高。在不关心提交结果是否成功的情况下,或者需要频繁修改数据并统一提交的场景中,apply方法更为合适。
综上所述,SharedPreferences的apply和commit方法各有其特点,选择使用哪种方法取决于具体的场景和需求。