package Ġcom . abs int he . k age . manager Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . os . Process Ċ import Ġcom . abs int he . k age . Base Activity Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . lang . ref . Weak Reference Ċ import Ġjava . util .* Ċ Ċ object ĠActivity Stack Manager Ġ{ ĊĊĠĠĠ Ġ/** * ĊĠĠĠĠ Ġ* ĠActivity ĠStack ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠActivity Ġstack ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġstack : ĠStack < Weak Reference < Base Activity >> Ġ= ĠStack () ĊĊĠĠĠ Ġ/** * ĊĠĠĠĠ Ġ* ĠSize Ġof ĠActiv ities ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠSize Ġof ĠActiv ities ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġstack Size : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstack . size ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** * ĊĠĠĠĠ Ġ* ĠGet Ġtop Ġstack ĠActivity ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠActivity ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġtop Activity : ĠBase Activity ? ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstack . last Element (). get () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd ĠActivity Ġto Ġstack ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd Activity ( activity : ĠWeak Reference < Base Activity >) Ġ{ ĊĠĠĠĠĠĠĠ Ġstack . add ( activity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDelete ĠActivity ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġactivity ĠWeak ĠReference Ġof ĠActivity ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġremove Activity ( activity : ĠWeak Reference < Base Activity >) Ġ{ ĊĠĠĠĠĠĠĠ Ġstack . remove ( activity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** * ĊĠĠĠĠ Ġ* ĠGet ĠActivity Ġby Ġclass ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcls ĠActivity Ġclass ĊĠĠĠĠ Ġ* Ġ@ return ĠActivity ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠgetActivity ( cls : ĠClass < *> ): ĠBase Activity ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġreturn Activity : ĠBase Activity ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġfor Ġ( activity Ġin Ġstack ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity . get () !!. java Class Ġ== Ġcls ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Activity Ġ= Ġactivity . get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġreturn Activity ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠKill Ġtop Ġstack ĠActivity ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġkill Top Activity () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġstack . last Element () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkill Activity ( activity ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( e . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** * ĊĠĠĠĠ Ġ* ĠKill ĠActivity ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġactivity ĠActivity Ġwant Ġto Ġkill ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġkill Activity ( activity : ĠWeak Reference < Base Activity >) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġiterator Ġ= Ġstack . iterator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( iterator . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstack Activity Ġ= Ġiterator . next () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( stack Activity . get () Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġiterator . remove () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( stack Activity . get () !!. java Class . name Ġ== Ġactivity . get () !!. java Class . name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġiterator . remove () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstack Activity . get () !!. finish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( e . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** * ĊĠĠĠĠ Ġ* ĠKill ĠActivity Ġby Ġclass ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcls Ġclass ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġkill Activity ( cls : ĠClass <* >) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Iterator Ġ= Ġstack . list Iterator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( list Iterator . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactivity : ĠActivity ? Ġ= Ġlist Iterator . next (). get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Iterator . remove () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity . java Class Ġ== Ġcls ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Iterator . remove () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . finish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( e . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠKill Ġall ĠActivity ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġkill All Activity () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Iterator Ġ= Ġstack . list Iterator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( list Iterator . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġlist Iterator . next (). get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. finish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Iterator . remove () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( e . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠExit Ġapplication ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġexit App () Ġ{ ĊĠĠĠĠĠĠĠ Ġkill All Activity () ĊĠĠĠĠĠĠĠ ĠProcess . kill Process ( Process . my Pid ()) ĊĠĠĠ Ġ} Ċ }