Skip to content
阅读进度

SharedPreferences.commit() 和 apply() 的区别是什么?为什么推荐使用 apply()? ​

返回 数据与搜索 目录

标准回答 ​

commit 会等待写盘并返回是否成功;apply 先更新内存,再安排写盘,调用方不等待结果。

通俗例子 ​

保存一个主题开关通常可用 apply;必须知道本次保存是否成功时,可在后台调用 commit。apply 也不代表底层写盘完全没有性能影响。

深入解释 ​

**内存更新和磁盘落盘是两步:**apply 和 commit 都会更新进程内看到的配置;apply 把写磁盘工作安排为异步,commit 同步等待并返回是否写入成功。

**为什么仍要控制使用频率:**apply 不返回磁盘成功结果,也不代表所有调用成本都为零。大量、频繁写配置会增加存储工作,关键持久化不要只凭调用已返回就断定已经落盘。

内容来源 ​

用完整回答理解机制,用真实证据解释项目。