package Ġcom . example . company test . Data Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . room . Database Ċ import Ġandroidx . room . Room Ċ import Ġandroidx . room . Room Database Ċ import Ġcom . example . company test . Model . User Ċ import Ġcom . example . company test . R Ċ Ċ @ Database ( entities Ġ= Ġ[ User :: class ], Ġversion Ġ= Ġ 1 , Ġexport Schema Ġ= Ġfalse ) Ċ abstract Ġclass ĠUser Data Base Ġ: ĠRoom Database () Ġ{ ĊĠĠĠ Ġabstract Ġfun ĠgetUser Dao (): ĠUser Dao ? ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġapp Database : ĠUser Data Base ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ@ Synchron ized ĊĠĠĠĠĠĠĠ Ġfun Ġget App Database ( context : ĠContext ): ĠUser Data Base ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( app Database Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Database Ġ= ĠRoom . database Builder ( context . getApplicationContext (), ĠUser Data Base :: class . java , Ġ" database app "). allow MainThread Queries () Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ ĠDon 't Ġdo Ġthis Ġon Ġa Ġreal Ġapp ! ĠAlways Ġuse ĠAsync Task Ġor Ġin ĠKotlin Ġuse ĠCor outines Ġsome Ġother Ġbackground Ġthread Ġto Ġget Ġand Ġput Ġdata Ġin Ġdatabase ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠI Ġuse Ġthis Ġbecause Ġtime Ġis Ġshort Ġand Ġhave Ġnot Ġmuch Ġdata ..... ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġallow Ġqueries Ġon Ġthe Ġmain Ġthread . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. allow MainThread Queries () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġapp Database ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }