Android 提交与申请

示例

该方法是异步的,而是同步的。editor.apply()editor.commit()

显然,您应该致电apply()或commit()。

2.3
SharedPreferences settings = getSharedPreferences(PREFS_FILE, MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean(PREF_CONST, true);
// 这将异步保存共享首选项,而不保留当前线程。
editor.apply();

SharedPreferences settings = getSharedPreferences(PREFS_FILE, MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean(PREF_CONST, true);
// 这将同步保存共享的首选项,同时保留当前线程,直到完成并返回成功标志。
boolean result = editor.commit();

apply() 是在2.3(API 9)中添加的,它的提交没有返回表示成功或失败的布尔值。

commit() 如果保存有效,则返回true,否则返回false。

apply() 之所以加入,是因为Android开发团队注意到几乎没有人注意到返回值,因此apply更快,因为它是异步的。

与不同commit(),后者会将其首选项同步地写到持久性存储中,apply()而立SharedPreferences即将其更改提交到内存中,但会开始对磁盘进行异步提交,并且不会收到任何故障通知。如果与此相关的其他编辑器在a仍未完成的SharedPreferences情况下执行常规操作,则will会阻塞,直到所有异步操作以及所有其他可能待处理的同步提交完成为止。commit()apply()commit()commits(apply)