從文檔中可以看出一些區(qū)別:
apply()沒有返回值,而commit()是有返回值的,返回值標(biāo)識(shí)著是否執(zhí)行成功。
apply()的操作是原子提交到內(nèi)存中,然后以異步的方式保存到磁盤上,而commit()完全是以同步的方式將數(shù)據(jù)保存到磁盤上。
apply()因?yàn)闆]有返回值,所以不會(huì)提示任何失敗。只需要調(diào)用即可。
無論是apply()還是commit(),如果同時(shí)被操作了,以最后一次操作為準(zhǔn)。
兩個(gè)方法區(qū)別:
apply沒有返回值而commit有返回表明修改是否成功
apply是將修改數(shù)據(jù)原子提交到內(nèi)存, 而后異步真正提交到硬件磁盤, 而commit是同步的提交到硬件磁盤,因此,在多個(gè)并發(fā)的提交commit的時(shí)候,他們會(huì)等待正在處理的commit保存到磁盤后在操作,從而降低了效率。而apply只是原子的提交到內(nèi)容,后面有調(diào)用apply的函數(shù)的將會(huì)直接覆蓋前面的內(nèi)存數(shù)據(jù),這樣從一定程度上提高了很多效率。
apply方法不會(huì)提示任何失敗的提示。
由于在一個(gè)進(jìn)程中,sharedPreference是單實(shí)例,一般不會(huì)出現(xiàn)并發(fā)沖突,如果對(duì)提交的結(jié)果不關(guān)心的話,建議使用apply()。
作者:YoungerDev
鏈接:http://www.itdecent.cn/p/7be25bfb4cb4
來源:簡(jiǎn)書
簡(jiǎn)書著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請(qǐng)聯(lián)系作者獲得授權(quán)并注明出處。