LeoAndo / RoomJavaSample

Home Page:https://developer.android.com/training/data-storage/room

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

overview

Java + LiveDataを使ったRoomの技術調査用アプリ

スレッドセーフなsingleton instanceの扱いについて

documentやroomの内部実装を見ると、RoomDatabaseやdaoをシングルトンで扱うことを推奨している。
https://github.com/LeoAndo/RoomJavaSample/blob/main/app/src/main/java/com/leoleo/roomjavasample/roomjavasample/data/DataModule.java
こちらの実装はroomの自動生成ファイル(java)やjetpack、kotlinの遅延初期化(lazy)の内部実装を参考にした。

jetpackの内部コード datastore(kotlin)

https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:datastore/datastore-rxjava3/src/main/java/androidx/datastore/rxjava3/RxDataStoreDelegate.kt?hl=ja スクリーンショット 2023-07-13 23 53 34

android roomの自動生成ファイル(java)

スクリーンショット 2023-07-13 23 48 13 スクリーンショット 2023-07-13 23 48 04

kotlinの遅延初期化(lazy)

https://github.com/JetBrains/kotlin/blob/master/libraries/stdlib/jvm/src/kotlin/util/LazyJVM.kt#L55:L87
スクリーンショット 2023-07-14 23 02 49

capture

refs

https://en.wikipedia.org/wiki/Double-checked_locking#Usage_in_Java
https://en.wikipedia.org/wiki/Singleton_pattern