You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中SharedPreference是否有异步写入API?apply()是否为同步方法?官方文档是否有误?

SharedPreferences apply() 相关疑问解答

1. apply() 是否属于同步方法?

不能简单把apply()归为纯同步或纯异步方法:

  • 内存层面的更新是同步完成的:调用apply()后,立即能从SharedPreferences对象中读取到最新值,这部分不会阻塞线程。
  • 磁盘写入操作是异步提交到后台线程执行的,但存在特殊阻塞场景:当App进入生命周期的关键节点(比如Activity的onPause()/onStop()),或者系统需要确保磁盘写入完成时(比如执行fsync操作),当前线程(包括UI线程)会被阻塞,直到异步写入任务完成。

所以apply()不是完全的同步方法,但也不是绝对不会阻塞UI线程的异步方法。

2. Android官方文档是否存在错误?

官方文档并没有错误,只是描述不够全面。
文档强调apply()是异步写入磁盘,适合在UI线程调用,这部分是正确的——它不会像commit()那样立即阻塞线程等待磁盘写入完成后返回结果。但文档没有明确说明在App生命周期的某些节点,apply()的异步写入会触发UI线程阻塞的情况,这才导致了认知差异。


内容的提问来源于stack exchange,提问作者CodingBruceLee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 03:30:46