package Ġcom . mu . jan . problems Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . lifecycle . Lifecycle Ċ import Ġandroidx . lifecycle . Lifecycle Observer Ċ import Ġandroidx . lifecycle . On Lifecycle Event Ċ Ċ /** Ċ Ġ* ĠUsing Ġcustom Ġlistener Ġhas Ġbecome Ġa Ġcommon Ġthing Ġamong Ġmany Ġdevelopers . Ċ Ġ* ĠMaking Ġcustom Ġlistener Ġin Ġapplication Ġis Ġone Ġof Ġmy Ġfav Ġthings Ġas Ġa Ġandroid Ċ Ġ* Ġapp Ġdeveloper . Ċ Ġ* Ċ Ġ* ĠIt 's Ġvery Ġeasy Ġto Ġmake Ġcustom Ġlistener . ĠBut Ġeasy Ġproblem Ġis , Ċ Ġ* Ġregister Ġor Ġunregister Ġlistener Ġwith Ġactivity ĠonStart () Ġand Ġon Destroy (). Ċ Ġ* ĠMaybe Ġit Ġmight Ġleak Ġmemory Ġif Ġlistener Ġnot Ġwell Ġun registered . Ċ Ġ* Ċ Ġ* ĠIf Ġcustom Ġlistener Ġtied Ġto Ġactivity Ġlifecycle , Ġit Ġcan Ġget Ġbetter Ġto Ġuse . Ċ Ġ* Ċ Ġ*/ Ċ class ĠMy Custom Listener Activity : ĠAppCompatActivity (){ ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġ// .. ĊĠĠĠĠĠĠĠ Ġval Ġobserver Listener Ġ= ĠMy Listener ( this , object Ġ: ĠItem Event { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Data Loaded () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġlifecycle . add Observer ( observer Listener ) ĊĠĠĠ Ġ} Ċ } Ċ interface ĠItem Event { ĊĠĠĠ Ġfun Ġon Data Loaded () Ċ } Ċ class ĠMy Listener ( ĊĠĠĠ Ġprivate Ġvar ĠmContext : ĠContext ? Ġ= Ġnull , ĊĠĠĠ Ġprivate Ġvar Ġitem Event : ĠItem Event ? Ġ= Ġnull Ċ ): ĠLifecycle Observer { ĊĊĠĠĠ Ġ@ On Lifecycle Event ( Lifecycle . Event . ON _ START ) ĊĠĠĠ Ġfun Ġconnect Listener (){ ĊĊĠĠĠ Ġ} ĊĠĠĠ Ġ@ On Lifecycle Event ( Lifecycle . Event . ON _ STOP ) ĊĠĠĠ Ġfun Ġdisconnect Listener (){ ĊĠĠĠĠĠĠĠ Ġitem Event Ġ= Ġnull ĊĠĠĠĠĠĠĠ ĠmContext Ġ= Ġnull ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġdata Loaded (){ ĊĠĠĠĠĠĠĠ Ġitem Event ?. on Data Loaded () ĊĠĠĠ Ġ} Ċ } Ċ