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