當前位置:成語大全網 - 書法字典 - 共享優先權的內在原理分析

共享優先權的內在原理分析

SharedPreferences內部工作原理:

1,調用getSharedPreferences();創建壹個SharedPreferences對象,它將首先確定是否存在壹對。

如果xml文件存在,如果找到了,會有壹個預加載操作,將xml文件的內容經過I/O操作和XmlUitl解析後存儲到壹個map對象中,所以我們調用shared preferences::getString();get操作實際上並不對文件做I/O操作,而是直接訪問剛設置的map的內容,提高了效率。如果相應的xml不存在,則重新創建相應的xml文件。

2.放寫操作:寫操作有兩個步驟,壹是將數據寫入內存,也就是映射集,二是將數據寫入硬盤文件。只有這樣才能保證數據的完整性。提交寫操作有兩種方式:

從源代碼解釋來看,commit方法有以下特點

存儲過程是原子操作提交方法有返回值,設置成功為真,否則為假。

同時,SharedPreferences設置值的最後壹次設置將直接覆蓋先前的值。

如果不在乎設置是否成功,並且值是在主線程中設置的,建議使用apply方法。

應用功能如下

存儲的過程也是原子操作。

Apply沒有返回值,所以無法知道存儲是否成功。

申請寫作過程分為兩步。第壹步是同步寫入內存,第二步是異步寫入物理磁盤。並且寫入過程將阻止同壹SharedPreferences對象的其他寫入操作。

很明顯apply方法沒有返回值,用戶無法知道提交是否成功。而且直觀來說,Runnable還有兩種實現。提交過程采用子線程提交,是異步的。

Synchronized關鍵字廣泛用於提交到內存和磁盤的寫操作,以確保線程安全。最後,使用阻塞操作來等待剩余的線程完成它們的操作。因此,提交操作在多線程下是線程安全的。請註意,try-catch用於確保提交過程不會中斷。

對比摘要:

提交和應用是原子操作,其中提交不能被中斷。

Commit有對應的返回值,可以知道操作是否成功,apply沒有返回值。

提交是壹個同步過程,比應用異步提交慢。

commit方法將修改後的數據提交到內存,然後同步提交到硬件磁盤。因此,當提交多個並發提交時,它們會等待提交的數據保存到磁盤後再進行操作,從而降低了效率。

Apply是將修改後的數據提交到內存,然後異步提交到硬件磁盤。