package Ġcom . github . flo rent 3 7 . application . provider Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Application Ċ import Ġandroid . os . Bundle Ċ import Ġkotlinx . coroutines . channels . Con fl ated Broadcast Channel Ċ import Ġkotlinx . coroutines . channels . await Close Ċ import Ġkotlinx . coroutines . flow .* Ċ import Ġjava . lang . ref . Weak Reference Ċ import Ġjava . util . concurrent . Concurrent Linked Queue ĊĊ Ċ interface ĠActivity Created Listener Ġ{ ĊĠĠĠ Ġfun Ġon Activity Created ( activity : ĠActivity ) Ċ } Ċ Ċ interface ĠActivity Res umed Listener Ġ{ ĊĠĠĠ Ġfun Ġon Activity Res umed ( activity : ĠActivity ) Ċ } Ċ Ċ interface ĠActivity Paused Listener Ġ{ ĊĠĠĠ Ġfun Ġon Activity Paused ( activity : ĠActivity ) Ċ } Ċ Ċ interface ĠActivity Destroyed Listener Ġ{ ĊĠĠĠ Ġfun Ġon Activity Destroyed ( activity : ĠActivity ) Ċ } Ċ Ċ interface ĠActivity Stopped Listener Ġ{ ĊĠĠĠ Ġfun Ġon Activity Stopped ( activity : ĠActivity ) Ċ } Ċ Ċ interface ĠActivity Started Listener Ġ{ ĊĠĠĠ Ġfun Ġon Activity Started ( activity : ĠActivity ) Ċ } Ċ Ċ enum Ġclass ĠActivity State Ġ{ ĊĠĠĠ ĠCREATE , ĊĠĠĠ ĠSTART , ĊĠĠĠ ĠRES UME , ĊĠĠĠ ĠPA USE , ĊĠĠĠ ĠSTOP , ĊĠĠĠ ĠDEST ROY Ċ } Ċ Ċ class ĠActivity And State Ġ{ ĊĠĠĠ Ġval Ġname : ĠString ĊĠĠĠ Ġval Ġactivity : ĠWeak Reference < Activity > ĊĠĠĠ Ġval Ġstate : ĠActivity State ĊĊĠĠĠ Ġconstructor ( activity : ĠActivity , Ġstate : ĠActivity State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . name Ġ= Ġ( activity Ġas ĠAny ). toString () Ġ// the Ġad ress ĊĠĠĠĠĠĠĠ Ġthis . activity Ġ= ĠWeak Reference ( activity ) ĊĠĠĠĠĠĠĠ Ġthis . state Ġ= Ġstate ĊĠĠĠ Ġ} Ċ } Ċ Ċ object ĠActivity Provider Ġ{ ĊĠĠĠ Ġprivate Ġval Ġactivity Created Listeners Ġ= ĠConcurrent Linked Queue < Activity Created Listener >() ĊĠĠĠ Ġprivate Ġval Ġactivity Res umed Listeners Ġ= ĠConcurrent Linked Queue < Activity Res umed Listener >() ĊĠĠĠ Ġprivate Ġval Ġactivity Paused Listeners Ġ= ĠConcurrent Linked Queue < Activity Paused Listener >() ĊĠĠĠ Ġprivate Ġval Ġactivity Stopped Listeners Ġ= ĠConcurrent Linked Queue < Activity Stopped Listener >() ĊĠĠĠ Ġprivate Ġval Ġactivity Start edList eners Ġ= ĠConcurrent Linked Queue < Activity Started Listener >() ĊĠĠĠ Ġprivate Ġval Ġactivity Destroy edList eners Ġ= ĠConcurrent Linked Queue < Activity Destroyed Listener >() ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġadd Created Listener ( listener : ĠActivity Created Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity Created Listeners . add ( listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġremove Created Listener ( listener : ĠActivity Created Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity Created Listeners . remove ( listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġadd Res umed Listener ( listener : ĠActivity Res umed Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity Res umed Listeners . add ( listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġremove Res umed Listener ( listener : ĠActivity Res umed Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity Res umed Listeners . remove ( listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġadd Paused Listener ( listener : ĠActivity Paused Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity Paused Listeners . add ( listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġremove Paused Listener ( listener : ĠActivity Paused Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity Paused Listeners . remove ( listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġadd Destroyed Listener ( listener : ĠActivity Destroyed Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity Destroy edList eners . add ( listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġremove Destroyed Listener ( listener : ĠActivity Destroyed Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity Destroy edList eners . remove ( listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġadd Stopped Listener ( listener : ĠActivity Stopped Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity Stopped Listeners . add ( listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġremove Stopped Listener ( listener : ĠActivity Stopped Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity Stopped Listeners . remove ( listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġadd Started Listener ( listener : ĠActivity Started Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity Start edList eners . add ( listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġremove Started Listener ( listener : ĠActivity Started Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity Start edList eners . remove ( listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġping Res umed Listeners ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ activities State . offer ( Activity And State ( activity , ĠActivity State . RE SU ME )) ĊĠĠĠĠĠĠĠ Ġoffer If Differ ( activity ) ĊĠĠĠĠĠĠĠ Ġactivity Res umed Listeners . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . on Activity Res umed ( activity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġping Paused Listeners ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ activities State . offer ( Activity And State ( activity , ĠActivity State . PAUSE )) ĊĠĠĠĠĠĠĠ Ġactivity Paused Listeners . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . on Activity Paused ( activity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġping Created Listeners ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoffer If Differ ( activity ) ĊĠĠĠĠĠĠĠ Ġ_ activities State . offer ( Activity And State ( activity , ĠActivity State . CREATE )) ĊĠĠĠĠĠĠĠ Ġactivity Created Listeners . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . on Activity Created ( activity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġping Destroy edList eners ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ activities State . offer ( Activity And State ( activity , ĠActivity State . DESTROY )) ĊĠĠĠĠĠĠĠ Ġactivity Destroy edList eners . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . on Activity Destroyed ( activity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġping Start edList eners ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ activities State . offer ( Activity And State ( activity , ĠActivity State . START )) ĊĠĠĠĠĠĠĠ Ġactivity Start edList eners . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . on Activity Started ( activity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġping Stopped Listeners ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ activities State . offer ( Activity And State ( activity , ĠActivity State . STOP )) ĊĠĠĠĠĠĠĠ Ġactivity Stopped Listeners . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . on Activity Stopped ( activity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġoffer If Differ ( new Activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Ġ= Ġcurrent Activity ĊĠĠĠĠĠĠĠ Ġif Ġ( current Ġ== Ġnull Ġ|| Ġcurrent Ġ!= Ġnew Activity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ current Activity . offer ( Weak Reference ( new Activity )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġval Ġ_ current Activity Ġ= ĠCon fl ated Broadcast Channel < Weak Reference < Activity >>() ĊĊĠĠĠ Ġval Ġlisten Current Activity : ĠFlow < Activity > Ġ= Ġ_ current Activity . as Flow (). map NotNull Ġ{ Ġit . get () Ġ} ĊĠĠĠ Ġsuspend Ġfun Ġactivity (): ĠActivity Ġ= Ġlisten Current Activity . first () ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġval Ġcurrent Activity : ĠActivity ? ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ_ current Activity . value OrNull ?. get () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġinternal Ġval Ġ_ activities State Ġ= ĠCon fl ated Broadcast Channel < Activity And State >() ĊĠĠĠ Ġval Ġlisten Activities State : ĠFlow < Activity And State > Ġ= Ġ_ activities State . as Flow () ĊĊĠĠĠ Ġfun Ġlisten Created () Ġ= Ġcallback Flow < Activity > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlistener Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠActivity Created Listener Ġ{ Ġ// Ġimplementation Ġof Ġsome Ġcallback Ġinterface ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Created ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffer ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġadd Created Listener ( listener ) ĊĠĠĠĠĠĠĠ Ġ// ĠS uspend Ġuntil Ġeither Ġon Completed Ġor Ġexternal Ġcancellation Ġare Ġinvoked ĊĠĠĠĠĠĠĠ Ġawait Close Ġ{ Ġremove Created Listener ( listener ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlisten Started () Ġ= Ġcallback Flow < Activity > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlistener Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠActivity Started Listener Ġ{ Ġ// Ġimplementation Ġof Ġsome Ġcallback Ġinterface ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Started ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffer ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġadd Started Listener ( listener ) ĊĠĠĠĠĠĠĠ Ġ// ĠS uspend Ġuntil Ġeither Ġon Completed Ġor Ġexternal Ġcancellation Ġare Ġinvoked ĊĠĠĠĠĠĠĠ Ġawait Close Ġ{ Ġremove Started Listener ( listener ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlisten Res umed () Ġ= Ġcallback Flow < Activity > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlistener Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠActivity Res umed Listener Ġ{ Ġ// Ġimplementation Ġof Ġsome Ġcallback Ġinterface ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Res umed ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffer ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġadd Res umed Listener ( listener ) ĊĠĠĠĠĠĠĠ Ġ// ĠS uspend Ġuntil Ġeither Ġon Completed Ġor Ġexternal Ġcancellation Ġare Ġinvoked ĊĠĠĠĠĠĠĠ Ġawait Close Ġ{ Ġremove Res umed Listener ( listener ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlisten Destroyed () Ġ= Ġcallback Flow < Activity > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlistener Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠActivity Destroyed Listener Ġ{ Ġ// Ġimplementation Ġof Ġsome Ġcallback Ġinterface ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Destroyed ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffer ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġadd Destroyed Listener ( listener ) ĊĠĠĠĠĠĠĠ Ġ// ĠS uspend Ġuntil Ġeither Ġon Completed Ġor Ġexternal Ġcancellation Ġare Ġinvoked ĊĠĠĠĠĠĠĠ Ġawait Close Ġ{ Ġremove Destroyed Listener ( listener ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlisten Stopped () Ġ= Ġcallback Flow < Activity > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlistener Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠActivity Stopped Listener Ġ{ Ġ// Ġimplementation Ġof Ġsome Ġcallback Ġinterface ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Stopped ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffer ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġadd Stopped Listener ( listener ) ĊĠĠĠĠĠĠĠ Ġ// ĠS uspend Ġuntil Ġeither Ġon Completed Ġor Ġexternal Ġcancellation Ġare Ġinvoked ĊĠĠĠĠĠĠĠ Ġawait Close Ġ{ Ġremove Stopped Listener ( listener ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlisten Paused () Ġ= Ġcallback Flow < Activity > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlistener Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠActivity Paused Listener Ġ{ Ġ// Ġimplementation Ġof Ġsome Ġcallback Ġinterface ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Paused ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffer ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġadd Paused Listener ( listener ) ĊĠĠĠĠĠĠĠ Ġ// ĠS uspend Ġuntil Ġeither Ġon Completed Ġor Ġexternal Ġcancellation Ġare Ġinvoked ĊĠĠĠĠĠĠĠ Ġawait Close Ġ{ Ġremove Paused Listener ( listener ) Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġlisten Activity Changed () Ġ= Ġlisten Activities State ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . state Ġ== ĠActivity State . RE SU ME Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. distinct Until Changed By Ġ{ Ġit . name Ġ} Ċ } Ċ Ċ class ĠLast Activity Provider Ġ: ĠEmpty Provider () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠonCreate (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ ĠApplication Provider . listen Ġ{ Ġapplication Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapplication . register Activity Lifecycle Callbacks ( object Ġ: ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApplication . Activity Lifecycle Callbacks Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Created ( activity : ĠActivity ?, ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Provider . ping Created Listeners ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Res umed ( activity : ĠActivity ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Provider . ping Res umed Listeners ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Paused ( activity : ĠActivity ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Provider . ping Paused Listeners ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Destroyed ( activity : ĠActivity ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Provider . ping Destroy edList eners ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Started ( activity : ĠActivity ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Provider . ping Start edList eners ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Save InstanceState ( activity : ĠActivity ?, Ġout State : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Stopped ( activity : ĠActivity ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Provider . ping Stopped Listeners ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} Ċ }