package Ġcom . sw ens un . pot ato Ċ Ċ import Ġandroid . os . AsyncTask Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . sw ens un . func . room . database . R Data Base Ċ import Ġcom . sw ens un . func . room . database . Room Entity Ċ import Ġcom . sw ens un . launch IO Ċ import Ġcom . sw ens un . sw utils . util . Logger Ċ Ċ class ĠMain ViewModel Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġval Ġint LiveData Ġ= ĠMutable LiveData < Int >() ĊĠĠĠ Ġval Ġstring LiveData Ġ= ĠMutable LiveData < String >() ĊĊĠĠĠ Ġfun Ġtest Cor outines () Ġ{ ĊĠĠĠĠĠĠĠ Ġ( 0 Ġuntil Ġ 1 0 0 0 ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch IO Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġformat Json () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . d (" thread :${ Thread . currentThread (). name }, Ġ$ it ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġformat Json () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġopen Database () Ġ{ ĊĠĠĠĠĠĠĠ Ġlaunch IO Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR Data Base . INSTANCE . room Dao (). upsert ( Room Entity ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfetch data ( i : ĠInt , Ġfunction : Ġ(( Int ) Ġ-> ĠUnit )? Ġ= Ġnull ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġi ĊĠĠĠĠĠĠĠ ĠAsync Task . SERIAL _ EXECUT OR . execute Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 2 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ+= Ġresult Ġ+ Ġ 1 0 ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊ Ċ }