package Ġcom . w ada 8 1 1 . view models aved state . sample Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . Activity Info Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Settings Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . activity . view Models Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . w ada 8 1 1 . databinding . data Binding Ċ import Ġcom . w ada 8 1 1 . view models aved state . extension . putExtra Ċ import Ġcom . w ada 8 1 1 . view models aved state . sample . Sample ViewModel . Count Up Value Ċ import Ġcom . w ada 8 1 1 . view models aved state . sample . Sample ViewModel . Count Up Value . ONE Ċ import Ġcom . w ada 8 1 1 . view models aved state . sample . Sample ViewModel . Count Up Value . TEN Ċ import Ġcom . w ada 8 1 1 . view models aved state . sample . databinding . Sample Activity Binding Ċ Ċ class ĠSample Activity Ġ: ĠAppCompatActivity ( R . layout . sample _ activity ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġbinding : ĠSample Activity Binding Ġby Ġdata Binding () ĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠSample ViewModel Ġby Ġview Models () ĊĠĠĠ Ġprivate Ġvar Ġcount Ġ= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠviewModel . append Log (" Activity :: onCreate ") ĊĠĠĠĠĠĠĠ Ġbinding . viewModel Ġ= ĠviewModel ĊĠĠĠĠĠĠĠ Ġbinding . activity Count Text . text Ġ= Ġ"$ count " ĊĠĠĠĠĠĠĠ Ġbinding . count Up Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount Ġ+= ĠviewModel . count Up Value Enum LiveData . value ?. count Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . activity Count Text . text Ġ= Ġ"$ count " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . count Up () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwhen Ġ( viewModel . count Up Value Enum LiveData . value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠONE Ġ-> Ġbinding . plus One Button . isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT EN Ġ-> Ġbinding . plus Ten Button . isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> ĠUnit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . plus One Button . setOn Checked ChangeListener Ġ{ Ġ_, Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plus Ten Button . isChecked Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . count Up Value Enum LiveData . value Ġ= Ġif Ġ( isChecked ) ĠCount Up Value . ONE Ġelse Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . plus Ten Button . setOn Checked ChangeListener Ġ{ Ġ_, Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . plus One Button . isChecked Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . count Up Value Enum LiveData . value Ġ= Ġif Ġ( isChecked ) ĠCount Up Value . TEN Ġelse Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . rotate Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . append Log (" Activity :: rotate ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequested Orientation Ġ= Ġwhen Ġ( requested Orientation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Info . SCREEN _ OR IENTATION _ POR TRA IT Ġ-> ĠActivity Info . SCREEN _ OR IENTATION _ LAND SC APE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠActivity Info . SCREEN _ OR IENTATION _ POR TRA IT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . restart Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isEnabled DoNot Keep Activities ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . append Log (" Activity :: restart ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( MainActivity . create Intent ( this )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" adb Ġshell Ġsettings Ġput Ġglobal Ġalways _ finish _ activities Ġ 1 ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Enabled DoNot Keep Activities (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdo Not Keep Activities Ġ= ĠSettings . Global . getInt ( content Resolver , ĠSettings . Global . ALWAYS _ FIN ISH _ ACTIV ITIES , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġdo Not Keep Activities Ġ!= Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ ĠviewModel . append Log (" Activity :: on Pause ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ ĠviewModel . append Log (" Activity :: on Resume ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ ĠviewModel . append Log (" Activity :: on Destroy ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġcreate Intent ( context : ĠContext ): ĠIntent Ġ= ĠIntent ( context , ĠSample Activity :: class . java ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . putExtra ( Sample ViewModel :: saved State Count , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ