Android 数据库相关学习总结

📅 2026/7/10 15:04:53
Android 数据库相关学习总结
一、数据库1.1 sqlite升级与数据迁移涉及表和字段。表和字段的新增与删除能直接修改字段不支持直接修改需要通过中间文件做转换。1.2 数据库框架对比和源码分析如LiteOrm、GreenDao、Realm等。1.3 数据库的优化a.使用索引b.语句的拼接使用StringBuilder代替Stringc.查询时返回更少的结果集及更少的字段;d.少用cursor.getColumnIndex;e.异步线程;1.4如何导入外部数据库1. 把原数据库包括在项目源码的 res/raw 目录下2.在进入应用时若data/data下没有数据库则用写文件的方式把数据库拷入若已有则直接打开。二、SharedPreferencessharepreferences 是线程安全的底层SharedPreferencesImpl用synchronized来保证同步。但不是进程安全的可通过ContentProvider 实现多进程共同访问。不支持跨进程MODE_MULTI_PROCESS也没用。跨进程频繁读写可能导致数据损坏或丢失。初始化的时候会读取 sp 文件可能导致后续getXXX()方法阻塞。建议提前异步初始化 SharedPreferences。sp 文件的数据会全部保存在内存中所以不宜存放大数据。edit()方法每次都会新建一个EditorImpl对象。建议一次 edit()多次 putXXX() 。无论是commit()还是apply()针对任何修改都是全量写入。建议针对高频修改的配置项存在子啊单独的 sp 文件。commit()同步保存有返回值。apply()异步保存无返回值。onPause()、onReceive()等时机会等待异步写操作执行完成可能造成卡顿或者 ANR。Android中的SharedPreferences是否支持多进程、多线程