4

正如文档所说,

与将其首选项同步写入持久存储的 commit() 不同,apply() 会立即将其更改提交到内存中的 SharedPreferences,但会开始异步提交到磁盘,并且不会通知您任何失败。

这是否意味着,如果出现某些故障(例如可用空间不足),我的 SharedPreferences 只会恢复到以前的状态,并且不会产生任何异常?我的应用程序会崩溃吗?

4

1 回答 1

1

如此处所示,在将更改写入文件之前,SharedPreferences 首先尝试创建备份文件

如果成功:

尝试写入文件,删除备份并尽可能原子地返回 true。如果出现异常,删除新文件;下次我们将从备份中恢复。

因此,不会抛出任何异常并且 SharedPreferences 将返回到之前的状态(因为它会在将更改写入磁盘之前进行备份)。(尽管您不会收到任何失败的通知)。

于 2019-09-01T18:39:27.187 回答