Android 数据库相关学习总结

一、数据库

1.1 sqlite升级与数据迁移:

涉及表和字段。表和字段的新增与删除能直接修改,字段不支持直接修改,需要通过中间文件做转换。

1.2 数据库框架对比和源码分析:

如LiteOrm、GreenDao、Realm等。

1.3 数据库的优化:

a.使用索引;b.语句的拼接使用StringBuilder代替String;c.查询时返回更少的结果集及更少的字段;d.少用cursor.getColumnIndex;e.异步线程;

1.4如何导入外部数据库:

  1. 把原数据库包括在项目源码的 res/raw 目录下,2.在进入应用时,若data/data下没有数据库,则用写文件的方式把数据库拷入,若已有则直接打开。

二、SharedPreferences

sharepreferences 是线程安全的,底层(SharedPreferencesImpl)用synchronized来保证同步。但不是进程安全的,可通过ContentProvider 实现多进程共同访问。

  1. 不支持跨进程,MODE_MULTI_PROCESS 也没用。跨进程频繁读写可能导致数据损坏或丢失。
  2. 初始化的时候会读取 sp 文件,可能导致后续 getXXX() 方法阻塞。建议提前异步初始化 SharedPreferences。
  3. sp 文件的数据会全部保存在内存中,所以不宜存放大数据。
  4. edit() 方法每次都会新建一个 EditorImpl 对象。建议一次 edit(),多次 putXXX() 。
  5. 无论是 commit() 还是 apply() ,针对任何修改都是全量写入。建议针对高频修改的配置项存在子啊单独的 sp 文件。
  6. commit() 同步保存,有返回值。apply() 异步保存,无返回值。
  7. onPause() 、onReceive() 等时机会等待异步写操作执行完成,可能造成卡顿或者 ANR。

Android中的SharedPreferences是否支持多进程、多线程

相关推荐
PaperData5 小时前
1985-2025年全国区县专利申请与授权面板数据
数据库
snpgroupcn5 小时前
大数据量SAP迁移方案:系统越大,越不能硬搬
数据库·sap
Flynt6 小时前
Redis Cluster主节点挂了,为什么"高可用"还全员掉线?我把三次kill的记录翻出来了
数据库·redis·分布式
笃行3506 小时前
KingbaseES 数据加密全解:从 SSL 到全密态
数据库
Ivanqhz7 小时前
激活函数在 Transformer 中的作用及各种变体简述
java·linux·数据库·人工智能·深度学习
青柠之夏cc8 小时前
AI与教育:个性化学习助手让“因材施教“成为现实,但代价是隐私?
人工智能·学习
java1234_小锋8 小时前
【技术专题】Mysql8 数据库 - Mysql8 数据类型简介
数据库·mysql
知行EDI8 小时前
知行之桥 MaBang 端口使用指南——Create Order 订单创建篇
java·服务器·数据库
for_ever_love__8 小时前
机器学习入门——手写线性回归与梯度下降
人工智能·python·学习·机器学习·线性回归
成旭先生8 小时前
【2026】企业信息模糊查询 API 实战:名称、注册号、统一社会信用代码、企业类型与法人一次查全
服务器·数据库·数据服务