package Ġcom . line cy . eye pet izer . utils Ċ Ċ import Ġandroid . app . Activity Ċ import Ġjava . lang . ref . Weak Reference Ċ import Ġjava . util . ArrayList Ċ Ċ /** Ċ Ġ* Ġ@ author Ġby Ġline cy Ċ Ġ*/ Ċ class ĠActivity Manager Ġ{ ĊĠ Ġprivate Ġval Ġactivity Weak Ref : ĠMutable List < Weak Reference < Activity >> ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġactivity Weak Ref Ġ= ĠArrayList () ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġfun Ġ< T > ĠcheckNotNull ( reference : ĠT ?, Ġmessage : ĠString Ġ= Ġ(" activity == null ")) : ĠT Ġ{ ĊĠĠĠĠĠ Ġif Ġ( reference Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠNullPointerException ( message ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġreturn Ġreference ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġadd ( activity : ĠActivity ) Ġ{ ĊĠĠĠ ĠcheckNotNull ( activity ) ĊĠĠĠ Ġval Ġweak Ref Ġ= ĠWeak Reference ( activity ) ĊĠĠĠ Ġactivity Weak Ref . add ( weak Ref ) ĊĠ Ġ} ĊĊĠ Ġfun Ġsize (): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġactivity Weak Ref . size ĊĠ Ġ} ĊĊĊĠ Ġfun Ġget Top Activity (): ĠActivity ? Ġ{ ĊĠĠĠ Ġval Ġsize Ġ= Ġsize () ĊĠĠĠ Ġif Ġ( size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġactivity Weak Ref [ size Ġ- Ġ 1 ]. get () ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġnull ĊĠ Ġ} ĊĊĊĠ Ġfun Ġcontains ( activity : ĠActivity ?): ĠBoolean Ġ{ ĊĠĠĠ Ġif Ġ( null Ġ!= Ġactivity ) Ġ{ ĊĠĠĠĠĠ Ġval Ġsize Ġ= Ġsize () ĊĠĠĠĠĠ Ġ( 0 Ġuntil Ġsize ) ĊĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġactivity Weak Ref [ it ] Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . get () Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġreturn Ġit Ġ== Ġactivity Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġfalse ĊĠ Ġ} ĊĊĠ Ġfun Ġremove ( activity : ĠActivity ): ĠBoolean Ġ{ ĊĠĠĠ ĠcheckNotNull ( activity ) ĊĠĠĠ Ġval Ġsize Ġ= Ġsize () ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġsize ) Ġ{ ĊĠĠĠĠĠ Ġval Ġweak Ref Ġ= Ġactivity Weak Ref [ i ] ĊĠĠĠĠĠ Ġval Ġa Ġ= Ġweak Ref . get () ĊĠĠĠĠĠ Ġif Ġ( a Ġ== Ġactivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity Weak Ref . remove ( weak Ref ) ĊĠĠĠĠĠĠĠ Ġfinish ( a ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġfalse ĊĠ Ġ} ĊĊĊĠ Ġfun Ġclear () Ġ{ ĊĠĠĠ Ġval Ġsize Ġ= Ġsize () ĊĠĠĠ Ġ( 0 Ġuntil Ġsize ) ĊĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġactivity Weak Ref [ it ] Ġ} ĊĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġfinish ( it ) Ġ} ĊĊĠĠĠ Ġactivity Weak Ref . clear () ĊĠ Ġ} ĊĊĊĠ Ġprivate Ġfun Ġfinish ( weak Reference : ĠWeak Reference < Activity >) Ġ{ ĊĠĠĠ Ġval Ġa Ġ= Ġweak Reference . get () ĊĠĠĠ Ġfinish ( a ) ĊĠ Ġ} ĊĊĊĠ Ġprivate Ġfun Ġfinish ( activity : ĠActivity ?) Ġ{ ĊĠĠĠ Ġif Ġ( activity Ġ!= Ġnull Ġ&& Ġ! activity . is Finish ing ) Ġ{ ĊĠĠĠĠĠ Ġactivity . finish () ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ }