我知道应用和提交之间的区别。就我而言,我想使用commit()
,但是Android建议我使用apply()
,因为它在后台运行并且不会阻止主线程。
,如果我使用申请,是否有可能使用此类工作,或者是否有可能在致电之前不更新它?
editor.putBoolean("TEST", true)
editor.apply()
if (preferences.getBoolean("TEST")) {
//do something
}
我希望它能起作用,如文档中所述:
apply()
立即将其更改对内存共享广播,但启动异步对磁盘提交,并且您不会收到任何失败的通知。
当您访问相同的首选项对象(是单例)时,您应该始终看到一致的视图。
apply()
写信给临时Map
,后来异步写入磁盘。如果您在情况下立即使用getBoolean()
之类的方法,则如果此键在临时Map
中有一个值并将其返回。
检查sharedPreferencesImpl的源代码以查看其工作原理。