package Ġcom . example . af . main . ui Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroidx . activity . view Models Ċ import Ġandroidx . lifecycle . Lifecycle Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġandroidx . lifecycle . repeat On Lifecycle Ċ import Ġcom . af . framework . ui . Base Activity Ċ import Ġcom . example . af . databinding . Activity Main Binding Ċ import Ġcom . example . af . main . view model . Main ViewModel Ċ import Ġkotlinx . coroutines . flow .* Ċ import Ġkotlinx . coroutines . launch Ċ Ċ class ĠMainActivity Ġ: ĠBase Activity () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġview Binding : ĠActivity Main Binding ĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠMain ViewModel Ġby Ġview Models () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġview Binding Ġ= ĠActivity Main Binding . inflate ( LayoutInflater . from ( this )) ĊĠĠĠĠĠĠĠ ĠsetContentView ( view Binding . root ) ĊĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat On Lifecycle ( Lifecycle . State . STARTED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠUi State Ġdiff ing ï¼ļ Ui State Ġå¯¹è±¡ ä¸ŃçļĦ åŃĹæ®µ è¶Ĭ å¤ļ ï¼Į æķ°æį® æµģ å°± è¶Ĭ æľī åı¯èĥ½ åĽłä¸º åħ¶ä¸Ń ä¸Ģä¸ª åŃĹæ®µ è¢« æĽ´æĸ° èĢĮ åıĳ åĩº ãĢĤ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ çĶ±äºİ è§ĨåĽ¾ æ²¡æľī Ġdiff ing Ġ æľºåĪ¶ æĿ¥ äºĨè§£ è¿ŀ ç»Ń åıĳ åĩº çļĦæķ°æį® æµģ æĺ¯åĲ¦ çĽ¸åĲĮ ï¼Į åĽłæŃ¤ æ¯ıæ¬¡ åıĳ åĩº éĥ½ä¼ļ å¯¼èĩ´ è§ĨåĽ¾ æĽ´æĸ° ãĢĤ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ è¿Ļ æĦı åĳ³ çĿĢ ï¼Į åı¯èĥ½ å¿ħé¡» è¦ģ å¯¹ ĠLive Data Ġä½¿çĶ¨ ĠFlow ĠAPI ĠæĪĸ Ġdistinct Until Changed () Ġ çŃī æĸ¹æ³ķ æĿ¥ ç¼ĵ è§£ è¿Ļä¸ª éĹ®é¢ĺ ãĢĤ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . ui State . map Ġ{ Ġit . name Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. distinct Until Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. collect Latest Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend Text ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . ui State . collect Latest Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend Text ( it . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġview Binding . textView . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . load () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" SetText I 1 8 n ") ĊĠĠĠ Ġfun Ġappend Text ( text : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview Binding . textView . text Ġ= Ġ"${ view Binding . textView . text } Ġ+ Ġ$ text " ĊĠĠĠ Ġ} Ċ }