package Ġcom . w es ley don k . update . ui . internal . lifecycle Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Application Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . fragment . app . Fragment Activity Ċ import Ġjava . lang . ref . Weak Reference Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġkotlinx . coroutines . flow . Mutable State Flow Ċ import Ġkotlinx . coroutines . flow . as State Flow Ċ import Ġkotlinx . coroutines . flow . map NotNull Ċ Ċ class ĠActivity Lifecycle Tracker Ġ: ĠApplication . Activity Lifecycle Callbacks , ĠActivity Tracker Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcurrent Activity Ġ= ĠMutable State Flow < Weak Reference < Fragment Activity >? >( null ) ĊĊĠĠĠ Ġoverride Ġval Ġcurrent : ĠActivity ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġcurrent Activity . value ?. get () ĊĊĠĠĠ Ġoverride Ġfun Ġoffer ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Ġ= Ġcurrent ĊĠĠĠĠĠĠĠ Ġif Ġ( current Ġ== Ġnull Ġ|| Ġcurrent Ġ!= Ġactivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Activity . try Emit ( Weak Reference ( activity Ġas ? ĠFragment Activity )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstream (): ĠFlow < Fragment Activity > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcurrent Activity . as State Flow (). map NotNull Ġ{ Ġreference Ġ-> Ġreference ?. get () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( activity : ĠActivity , Ġp 1 : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġoffer ( activity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Started ( activity : ĠActivity ) Ġ= ĠUnit ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Res umed ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoffer ( activity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Paused ( activity : ĠActivity ) Ġ= ĠUnit ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Stopped ( activity : ĠActivity ) Ġ= ĠUnit ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Save InstanceState ( activity : ĠActivity , Ġp 1 : ĠBundle ) Ġ= ĠUnit ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Destroyed ( activity : ĠActivity ) Ġ= ĠUnit Ċ } Ċ