/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 8 ĠSquare , ĠInc . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġleak can ary . internal Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Application Ċ import Ġandroid . os . Build . VERSION . SDK _ INT Ċ import Ġandroid . os . Build . VERSION _ CODES . O Ċ import Ġandroid . os . Bundle Ċ import Ġleak can ary . Ref Watcher Ċ import Ġleak can ary . Leak S entry Ċ Ċ /** Ċ Ġ* ĠInternal Ġclass Ġused Ġto Ġwatch Ġfor Ġfragments Ġle aks . Ċ Ġ*/ Ċ internal Ġinterface ĠFragment Destroy Watcher Ġ{ ĊĊĠ Ġfun Ġwatch Fragments ( activity : ĠActivity ) ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠ Ġprivate Ġconst Ġval ĠSUPPORT _ FRAGMENT _ CLASS _ NAME Ġ= Ġ" android x . fragment . app . Fragment " ĊĊĠĠĠ Ġfun Ġinstall ( ĊĠĠĠĠĠ Ġapplication : ĠApplication , ĊĠĠĠĠĠ Ġref Watcher : ĠRef Watcher , ĊĠĠĠĠĠ Ġconfig Provider : Ġ() Ġ-> ĠLe ak S entry . Config ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ Ġval Ġfragment Destroy Watch ers Ġ= Ġmutable ListOf < Fragment Destroy Watcher >() ĊĊĠĠĠĠĠ Ġif Ġ( SDK _ INT Ġ>= ĠO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfragment Destroy Watch ers . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAndroid OF ragment Destroy Watcher ( ref Watcher , Ġconfig Provider ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġif Ġ( class Available ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSUPPORT _ FRAGMENT _ CLASS _ NAME ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfragment Destroy Watch ers . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSupport Fragment Destroy Watcher ( ref Watcher , Ġconfig Provider ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġif Ġ( fragment Destroy Watch ers . size Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġapplication . register Activity Lifecycle Callbacks ( object Ġ: ĠActivity Lifecycle Callbacks Adapter () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Created ( ĊĠĠĠĠĠĠĠĠĠ Ġactivity : ĠActivity , ĊĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġfor Ġ( watcher Ġin Ġfragment Destroy Watch ers ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwatcher . watch Fragments ( activity ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclass Available ( className : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠ ĠClass . forName ( className ) ĊĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠClass NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ