SharedPreferences.Editor 中 apply 与 commit 方法的区别

# SharedPreferences.Editor 中 apply 与 commit 方法的区别

在 Android 开发中,SharedPreferences 是我们用来存储简单键值对数据的工具。这就像是在口袋里带着一个小笔记本,随时记录下要点或标记。但当涉及到保存这些笔记时,你有两个选择:applycommit。它们乍看之下似乎可以互换使用,但实际上它们在数据写入方式和响应方式上的不同,可能会影响到你的应用性能和用户体验。

即时提交还是异步执行?

commitapply 保存偏好设置的最大区别在于它们的执行方式。

SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString("KEY", "value");
// 同步保存
editor.commit();
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString("KEY", "value");
// 异步保存
editor.apply();

commit 就像是寄出挂号信 —— 它给你一个返回值(boolean 值),确认你的数据(保存)。它会将更改写入磁盘,并且在完成之前不会让你继续进行,如果不小心处理,可能会阻塞主线程。

相比之下,apply 就像是把信丢进邮箱。它确保信件会到达目的地,但不会立即确认,并且不会阻碍你进行下一项任务。

何时使用 Commit

当你需要立即确认数据持久性,并且这对你的应用流程至关重要时,选择 commit。就像在进电梯前等那条短信发送一样。

boolean isSaved = editor.commit();
if(isSaved) {
    // 继续下一步,充满信心
} else {
    // 处理失败情况
}

使用 Apply 的理由

一般而言,apply 是更好的选择,特别是在处理 UI 交互时。用户在数据写入时不会感到任何延迟,从而获得更流畅的体验。

editor.apply();
// 立即继续,UI 保持响应

性能考量

从性能角度来看,apply 领先一步,因为它立即将更改提交到内存,并在后台线程中执行磁盘写入。它不会阻止用户继续使用应用。

结论

applycommit 之间的选择应当由对立即确认的需求与性能和响应性的考量来决定。对于大多数常规的偏好设置更新,apply 就足够且推荐使用。只有在你必须确定数据立即存储,作为关键操作的一部分时,才转向 commit

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jiet_h

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值