package Ġcom . po or . android . global . base Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . annotation . Layout Res Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . databinding . ViewData Binding Ċ import Ġandroidx . lifecycle . Lifecycle Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroid . os . Build Ċ Ċ import Ġandroid . view . WindowManager Ċ Ċ import Ġandroid . view . Window Ċ Ċ import Ġandroid . app . Activity Ċ import Ġcom . po or . android . R Ċ import Ġandroid . graphics . Color Ċ Ċ import Ġandroid . view . View Ċ Ċ abstract Ġclass ĠBase Activity < ViewModel Ġ: ĠBase ViewModel , ĠBinding Ġ: ĠView Data Binding > Ġ: ĊĠĠĠ ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġactivities Ġ= ĠArrayList < AppCompatActivity >() ĊĠĠĠ Ġprivate Ġvar Ġobserver List Ġ= ĠArrayList < Lifecycle Observer >() ĊĠĠĠ Ġprotected Ġlateinit Ġvar Ġbinding : ĠBinding ĊĠĠĠ Ġprotected Ġlateinit Ġvar ĠviewModel : ĠViewModel ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġset StatusBar Color () ĊĠĠĠĠĠĠĠ Ġactivities . add ( this ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . set ContentView ( this , Ġlayout Id ) ĊĊĠĠĠĠĠĠĠ Ġinit VM () ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠĠĠĠĠ Ġinit Data () ĊĠĠĠĠĠĠĠ Ġinit Listener () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit VM () Ġ{ ĊĠĠĠĠĠĠĠ Ġget ViewModel ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Provider ( this ). get ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Ob serve ( viewModel ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġä¿®æĶ¹ çĬ¶æĢģ æłı é¢ľèī² ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġset StatusBar Color () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwindow Ġ= Ġwindow ĊĠĠĠĠĠĠĠ Ġwindow . clear Flags ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWindow Manager . LayoutParams . FLAG _ TRANSL UC ENT _ STATUS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġor ĠWindow Manager . LayoutParams . FLAG _ TRANSL UC ENT _ NAV IG ATION ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġwindow . decor View . system Ui Visibility Ġ= Ġ( View . SYSTEM _ UI _ FLAG _ LAYOUT _ FULL SCREEN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġor ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ ST ABLE ) ĊĠĠĠĠĠĠĠ Ġwindow . add Flags ( WindowManager . LayoutParams . FLAG _ DR AWS _ SYSTEM _ BAR _ BACK GRO UN DS ) ĊĠĠĠĠĠĠĠ Ġwindow . status Bar Color Ġ= ĠColor . TRANSP ARENT ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġinit View () ĊĊĠĠĠ Ġabstract Ġfun Ġinit Data () ĊĊĠĠĠ Ġabstract Ġfun Ġinit Listener () ĊĊĠĠĠ Ġprotected Ġfun Ġadd Ob serve ( lifecycle Observer : ĠLifecycle Observer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlifecycle . add Observer ( lifecycle Observer ) ĊĠĠĠĠĠĠĠ Ġobserver List . add ( lifecycle Observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġfinish All Activity () Ġ{ ĊĠĠĠĠĠĠĠ Ġactivities . forEach Ġ{ Ġit . finish () Ġ} ĊĠĠĠĠĠĠĠ Ġactivities . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ get : ĠLayout Res ĊĠĠĠ Ġabstract Ġval Ġlayout Id : ĠInt ĊĊĠĠĠ Ġabstract Ġfun Ġget ViewModel (): ĠClass < ViewModel >? ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġactivities . remove ( this ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( observer Ġin Ġobserver List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle . remove Observer ( observer ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} Ċ }