package Ġcom . trad wang . common . base Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Activity Manager Ċ import Ġandroid . app . Application Ċ import Ġandroid . app . Key guard Manager Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġandroid . os . Power Manager Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . util . Log Ċ import Ġcom . alibaba . android . ar outer . launcher . AR outer Ċ import Ġcom . sc wang . smart refresh . layout . Smart Refresh Layout Ċ import Ġcom . sc wang . smart refresh . layout . footer . Class ics Footer Ċ import Ġcom . sc wang . smart refresh . layout . header . Class ics Header Ċ import Ġcom . trad wang . common . Build Config Ċ import Ġcom . trad wang . common . R Ċ import Ġcom . trad wang . common . utils . K Log Ċ import Ġjava . util .* ĊĊ Ċ /** Ċ Ġ* Ġ ĠProject ĠName Ġ: ĠCommon Study Ċ Ġ* Ġ ĠPackage ĠName Ġ: Ġcom . trad wang . common . base Ċ Ġ* Ġ Ġ@ since Ġ 2 0 1 8 / 2 / 9 Ġ 1 5 : Ġ 2 7 Ċ Ġ* Ġ Ġ@ author Ġ: ĠTr ad W ang Ċ Ġ* Ġ Ġ@ email Ġ: Ġtrad _ wang @ s ina . com Ċ Ġ* Ġ Ġ@ version Ġ: Ċ Ġ* Ġ Ġ@ describe Ġ: Ċ Ġ*/ Ċ abstract Ġclass ĠApp Ġ: ĠApplication (), ĠApp Life CallBack Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate () ĊĊĠĠĠĠĠĠĠ ĠK Log . get Settings (). setBorder Enable ( true ). set Info Enable ( true ). set LogLevel ( Log . VERBOSE ). set Log Enable ( Build Config . DEBUG ) ĊĊĠĠĠĠĠĠĠ Ġs Instance Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġs Handler Ġ= ĠHandler ( Looper . get Main Looper ()) ĊĠĠĠĠĠĠĠ Ġs Activity Stack Ġ= ĠStack () ĊĊĠĠĠĠĠĠĠ Ġinit Refresh Layout () ĊĠĠĠĠĠĠĠ Ġregister Activity Life Callback () ĊĠĠĠĠĠĠĠ Ġinit AR outer () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* è®¾ç½® åħ¨å±Ģ åĪ·æĸ° æł·å¼ı ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġinit Refresh Layout () Ġ{ ĊĠĠĠĠĠĠĠ ĠSmart Refresh Layout . setDefault Refresh Footer Creator Ġ{ Ġcontext , Ġlayout Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout . set Primary Colors Id ( R . color . white , Ġandroid . R . color . black )// åħ¨å±Ģ è®¾ç½® ä¸»é¢ĺ é¢ľèī² ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setDefault Refresh Footer Creator ĠClass ics Footer ( context ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠSmart Refresh Layout . setDefault Refresh Header Creator Ġ{ Ġcontext , Ġlayout Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout . set Primary Colors Id ( R . color . white , Ġandroid . R . color . black )// åħ¨å±Ģ è®¾ç½® ä¸»é¢ĺ é¢ľèī² ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setDefault Refresh Header Creator ĠClass ics Header ( context ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* æ³¨åĨĮ Activity Life Callback ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġregister Activity Life Callback () Ġ{ ĊĠĠĠĠĠĠĠ Ġregister Activity Lifecycle Callbacks ( Activity Life CallBack ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* åĪĿå§ĭåĮĸ a Router ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġinit AR outer () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build Config . DEBUG ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠA Router . open Log () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠA Router . open Debug () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠA Router . init ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġm Visible Activity Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġs Instance : ĠApp ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġs Handler : ĠHandler ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġs Activity Stack : ĠStack < Activity > ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* èİ·åıĸ åįķ ä¾ĭ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance (): ĠApp Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġs Instance ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* èİ·åıĸ UI è¿Ľç¨ĭ Handler ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġget Handler (): ĠHandler Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġs Handler ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġrun Delayed ( run : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Handler (). post Delayed ({ Ġrun . invoke () Ġ}, Ġ 1 2 0 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġæĺ¯åĲ¦ æĺ¯ ä¸» çº¿ç¨ĭ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġis Main Process (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpid Ġ= Ġandroid . os . Process . my Pid () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactivity Manager Ġ= Ġs Instance . getSystem Service ( Context . ACTIVITY _ SERVICE ) Ġas ĠActivity Manager ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Manager Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( app Process Ġin Ġactivity Manager . running App Processes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( app Process . pid Ġ== Ġpid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġs Instance . application Info . packageName Ġ== Ġapp Process . process Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠåĪ¤æĸŃ App æĺ¯åĲ¦ åľ¨ åĲİåı° åı° ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġ Ġåľ¨ åĲİåı° , Ġfalse Ġ Ġä¸į åľ¨ åĲİåı° ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġapp Is Background (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġm Visible Activity Ġ<= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠåĪ¤æĸŃ App æĺ¯åĲ¦ åľ¨ åīį åı° ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġ Ġåľ¨ åīį åı° , Ġfalse Ġ Ġä¸į åľ¨ åīį åı° ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġapp Is Foreground ( packageName : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġm Visible Activity Ġ< Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠåĪ¤æĸŃ app Ġæĺ¯åĲ¦ åľ¨ è¿Ĳè¡Į ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġr ue Ġ Ġ æŃ£åľ¨ è¿Ĳè¡Į Ġ, Ġfalse Ġ Ġæ ² ¡ æľī è¿Ĳè¡Į ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġis App Running (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġs Activity Stack . size Ġ> Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠåĪ¤æĸŃ app Ġæĺ¯åĲ¦ åľ¨ è¿Ĳè¡Į ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġr ue Ġ Ġ æŃ£åľ¨ è¿Ĳè¡Į Ġ, Ġfalse Ġ Ġæ ² ¡ æľī è¿Ĳè¡Į ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġis App Running ( packageName : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactivity Manager Ġ= Ġs Instance . getSystem Service ( Context . ACTIVITY _ SERVICE ) Ġas ĠActivity Manager ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( activity Manager Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrunning App Processes Ġ= Ġactivity Manager . running App Processes ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrunning App Processes . any Ġ{ ĠText Utils . equals ( it . process Name , ĠpackageName ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ åĶ ¤ é ĨĴ åĲİåı° Activity åĪ° åīį åı° ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġaw ake Background App ( activity : ĠActivity ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactivity Manager Ġ= Ġactivity . getSystem Service ( Context . ACTIVITY _ SERVICE ) Ġas ĠActivity Manager ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity Manager Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrunning App Processes Ġ= Ġactivity Manager . running App Processes ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( running App Process Ġin Ġrunning App Processes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . equals ( running App Process . process Name , Ġactivity . packageName )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Manager . move Task To Front ( activity . taskId , ĠActivity Manager . MOVE _ TASK _ WITH _ HOME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġ å±ı å¹ķ æĺ¯åĲ¦ äº ® èµ· ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġis Screen On (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= Ġs Instance . getSystem Service ( Context . POWER _ SERVICE ) Ġas ĠPower Manager ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanager Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmanager . is Interactive ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġæĺ¯åĲ¦ å±ı å¹ķ éĶģ å®ļ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġis Locked (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= Ġs Instance . getSystem Service ( Context . KEY GU ARD _ SERVICE ) Ġas ĠKey guard Manager ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmanager Ġ!= Ġnull Ġ&& Ġmanager . is Key guard Locked ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġèİ·åıĸ å½ĵåīį æĺ¾ç¤º çļĦ Activity ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠActivity ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun ĠgetCurrent Activity (): ĠActivity ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( s Activity Stack . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġs Activity Stack . peek () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetActivity By Class ( clazz : ĠClass < *> ?): ĠActivity ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( clazz Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactivity List Iterator Ġ= Ġs Activity Stack . list Iterator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( activity List Iterator . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġactivity List Iterator . next () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity List Iterator . remove () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( clazz Ġ== Ġactivity . java Class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġactivity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ åħ³éĹŃ å½ĵåīį çļĦ Activity ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġfinish Current Activity () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s Activity Stack . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs Activity Stack . pop ()?. finish () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ ç»ĵæĿŁ æŁĲä¸ª Activity ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġclazz ĠActivity . class ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġfinish Activity ( clazz : ĠClass <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġiterator Ġ= Ġs Activity Stack . list Iterator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( iterator . hasNext ()) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġiterator . next () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġiterator . remove () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity . java Class Ġ== Ġclazz ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġiterator . remove () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . finish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ ç»ĵæĿŁ æīĢæľī Activity Ġ éĻ¤äºĨ åħ¶ä¸Ń ä¸Ģä¸ª ... ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġclazz ĠActivity . class ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġfinish Activity Except ( clazz : ĠClass < *> ?) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( clazz Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġiterator Ġ= Ġs Activity Stack . list Iterator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( iterator . hasNext ()) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġiterator . next () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġiterator . remove () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity . java Class Ġ!= Ġclazz ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġiterator . remove () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . finish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ ä»»åĬ¡ æłĪ æĺ¯åĲ¦ åĮħåĲ« çĽ®æłĩ activity ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġclazz Ġ çĽ®æłĩ activity ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġæĺ¯åĲ¦ åĮħåĲ« ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġhas Target Activity ( clazz : ĠClass < *> ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġs Activity Stack . any Ġ{ Ġit Ġ!= Ġnull Ġ&& Ġit . java Class Ġ== Ġclazz Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ åħ³éĹŃ æīĢæľīçļĦ activity ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġfinish All Activity () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Iterator Ġ= Ġs Activity Stack . list Iterator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( list Iterator . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġlist Iterator . next () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Iterator . remove () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . finish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Iterator . remove () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠActivity Life CallBack Ġ: ĠActivity Lifecycle Callbacks Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Created ( activity : ĠActivity ?, ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w (" APP ", Ġ" on Activity Created --> Ġ${ activity ?. java Class ?. simple Name } Ġ Ġ<-- ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs Activity Stack . push ( activity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Started ( activity : ĠActivity ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Res umed ( activity : ĠActivity ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Visible Activity Ġ+= Ġm Visible Activity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Visible Activity Ġ== Ġ 1 ) Ġ{ Ġ// App åı¯ è§ģ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( this @ App ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ App . on App Res umed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Paused ( activity : ĠActivity ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Visible Activity Ġ-= Ġm Visible Activity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Visible Activity Ġ== Ġ 0 ) Ġ{ Ġ// App ä¸įåı¯ è§ģ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( this @ App ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ App . on App Paused () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Save InstanceState ( activity : ĠActivity ?, Ġout State : ĠBundle ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Stopped ( activity : ĠActivity ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Destroyed ( activity : ĠActivity ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs Activity Stack . remove ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w (" APP ", Ġ" on Activity Destroyed --> Ġ${ activity ?. java Class ?. simple Name } Ġ Ġ<-- ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }