每日一練 20190525

1.描述一下Android數據持久存儲方式?數據庫

參考回答:Android平臺實現數據持久存儲的常見幾種方式:

SharedPreferences存儲:一種輕型的數據存儲方式,本質是基於XML文件存儲的key-value鍵值對數據,一般用來存儲一些簡單的配置信息(如應用程序的各類配置信息);
SQLite數據庫存儲:一種輕量級嵌入式數據庫引擎,它的運算速度很是快,佔用資源不多,經常使用來存儲大量複雜的關係數據;
ContentProvider:四大組件之一,用於數據的存儲和共享,不只可讓不一樣應用程序之間進行數據共享,還能夠選擇只對哪一部分數據進行共享,可保證程序中的隱私數據不會有泄漏風險;
File文件存儲:寫入和讀取文件的方法和 Java中實現I/O的程序同樣;
網絡存儲:主要在遠程的服務器中存儲相關數據,用戶操做的相關數據能夠同步到服務器上;

 2.SharedPreferences的應用場景?注意事項?服務器

參考回答:

SharedPreferences是一種輕型的數據存儲方式,本質是基於XML文件存儲的key-value鍵值對數據,一般用來存儲一些簡單的配置信息,如int,String,boolean、float和long;
注意事項:

勿存儲大型複雜數據,這會引發內存GC、阻塞主線程使頁面卡頓產生ANR
勿在多進程模式下,操做Sp
不要屢次edit和apply,儘可能批量修改一次提交
建議apply,少用commit

 3.SharedPrefrences的apply和commit有什麼區別?網絡

參考回答:

apply沒有返回值而commit返回boolean代表修改是否提交成功。
apply是將修改數據原子提交到內存, 然後異步真正提交到硬件磁盤, 而commit是同步的提交到硬件磁盤,所以,在多個併發的提交commit的時候,他們會等待正在處理的commit保存到磁盤後在操做,從而下降了效率。而apply只是原子的提交到內容,後面有調用apply的函數的將會直接覆蓋前面的內存數據,這樣從必定程度上提升了不少效率。
apply方法不會提示任何失敗的提示。 因爲在一個進程中,sharedPreference是單實例,通常不會出現併發衝突,若是對提交的結果不關心的話,建議使用apply,固然須要確保提交成功且有後續操做的話,仍是須要用commit的。

 4.瞭解SQLite中的事務操做嗎?是如何作的併發

參考回答:

SQLite在作CRDU操做時都默認開啓了事務,而後把SQL語句翻譯成對應的SQLiteStatement並調用其相應的CRUD方法,此時整個操做仍是在rollback journal這個臨時文件上進行,只有操做順利完成纔會更新db數據庫,不然會被回滾;

 5.使用SQLite作批量操做有什麼好的方法嗎?app

參考回答:

    使用SQLiteDatabase的beginTransaction方法開啓一個事務,將批量操做SQL語句轉化爲SQLiteStatement並進行批量操做,結束後endTransaction()
相關文章
相關標籤/搜索