-
room-common
、room-runtime
、room-ktx
三个依赖library
-
CRUD
实质使用原生sqlite
操作 -
room
内生支持liveData
&coroutines
-
源码概览
-
Room-Ktx
扩展函数1. CoroutinesRoom.createFlow/execute//支持协程flow 数据流操作 //支持协程调度器 2. CoroutinesRoomKt:>>RoomDatabase.queryDispatcher 3. CoroutinesRoomKt:>>RoomDatabase.transactionDispatcher //事务扩展 4. RoomDatabaseKt:>> RoomDatabase.acquireTransactionThread() 5. RoomDatabaseKt:>> RoomDatabase.createTransactionContext() 6. RoomDatabaseKt:>> RoomDatabase.withTransaction //事务 TransactionElement
-
Room-common
注解库//各种注解 标记 @update、@delete、@database、@entity、@room ......
-
Room-Runtime
运行库//关注类 1.RoomDatabase //sqlite database操作helper 2.SupportSQLiteOpenHelper //crud的操作entity 3.EntityInsertionAdapter/EntityDeletionOrUpdateAdapter
-
从使用开始@entity
、@dao
、database
------>>>通过注解kapt------>>生成dao_impl
、database_impl
-
创建数据库
-
Room.databaseBuilder-->RoomDatabase.builder-->FrameworkSQLiteOpenHelperFactory
database_impl
---SupportSQLiteOpenHelper.create
-
-
创建表
-
`database_impl`----->> RoomOpenHelper.Delegate
-
-
操作表
-
dao_impl
-
entity
------>>entityInsertionAdapter/EntityDeletionOrUpdateAdapter
------>>在dao_impl
中实现查询---->>
RoomSQLiteQuery
------>>DbUtil---->>cursor查询
-
LiveData
的支持:InvalidationTracker-->createLiveData-->InvalidationLiveDataContainer-->roomlivedata
-
增删改
默认不建议主线程操作(RoomDatabase.assertNotMainThread) -
增删改
通过SharedSQLiteStatement
实现类操作 -
查
通过SupportSQLiteQuery
的实现类操作