1、SharePreferences適用情形?使用中需要注意什麼?
保存登錄用戶名密碼等情形,應注意多進程併發讀的時候數據可能不準確。
需要注意:getSharedPreferences(“User”, Context.MODE_PRIVATE)方法中第二個參數需要了解Android的四種枚舉方式下面是詳細的解釋:
私有模式
Context.MODE_PRIVATE 的值是 0;
①只能被創建這個文件的當前應用訪問
②若文件不存在會創建文件;若創建的文件已存在則會覆蓋掉原來的文件
追加模式
Context.MODE_APPEND 的值是 32768;
①只能被創建這個文件的當前應用訪問
②若文件不存在會創建文件;若文件存在則在文件的末尾進行追加內容
可讀模式
Context.MODE_WORLD_READABLE的值是1;
①創建出來的文件可以被其他應用所讀取
可寫模式
Context.MODE_WORLD_WRITEABLE的值是2
①允許其他應用對其進行寫入。
2:瞭解SQLite中的事務處理嗎?是如何做的?
使用SQLiteDatabase的beginTransaction()方法可以開啓一個事務,程序執行到endTransaction() 方法時會檢查事務的標誌是否爲成功,如果程序執行到endTransaction()之前調用了setTransactionSuccessful() 方法設置事務的標誌爲成功則提交事務,如果沒有調用setTransactionSuccessful() 方法則回滾事務。多用於大量數據操作時,能明顯減少耗時。
https://blog.csdn.net/a443453087/article/details/7222247
3:使用SQLite做批量操作有什麼好的方法嗎?
即使用事務處理進行優化,默認SQLite的數據庫插入操作,如果沒有采用事務的話,它每次寫入提交,就會觸發一次事務操作,而這樣幾千條的數據,就會觸發幾千個事務的操作,這就是時間耗費的根源
4:如果現在要刪除SQLite中表的一個字段如何做?
SQLite目前還不支持drop column,所以必須想出另外一種方法來進行表字段的刪除。
如下sql語句會複製一個和record表一樣表結構的temp表出來,但是我們想要的是去除某一個字段(例如去除record表中的name字段,就不要複製它就好了),所以sql語句如下:
create table temp as select recordId, customer, place, time from record where 1 = 1;
這樣複製出來的表就會缺少“name”字段,然後我們刪除舊錶並修改新表名即可。
5:使用SQLite時會有哪些優化操作?
https://blog.csdn.net/phenixyf/article/details/70597232