package Ġcom . did ich ux ing . d ora emon kit Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Application Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . fragment . app . Fragment Activity Ċ import Ġandroidx . fragment . app . FragmentManager Ċ import Ġcom . did ich ux ing . d ora emon kit . constant . D okit Constant Ċ import Ġcom . did ich ux ing . d ora emon kit . kit . core . D okit View Manager Ċ import Ġcom . did ich ux ing . d ora emon kit . model . Activity Lifecycle Info Ċ import Ġcom . did ich ux ing . d ora emon kit . util . Lifecycle Listener Util Ċ import Ġcom . did ich ux ing . d ora emon kit . util . Permission Util Ċ import Ġcom . did ich ux ing . d ora emon kit . util . UI Utils Ċ Ċ /** Ċ Ġ* Ġ================================= =============== Ċ Ġ* Ġ ä½ľ ĠĠĠ Ġ èĢħ ï¼ļ jint ï¼Ī éĩĳ åı° ï¼ī Ċ Ġ* Ġ çīĪ ĠĠĠ Ġæľ¬ ï¼ļ 1 . 0 Ċ Ġ* ĠåĪĽå»º æĹ¥æľŁ ï¼ļ 2 0 1 9 - 1 2 - 3 1 - 1 0 : 0 4 Ċ Ġ* Ġæı ı ĠĠĠ Ġ è¿° ï¼ļ åħ¨å±Ģ çļĦ activity çĶŁåĳ½ åĳ¨æľŁ åĽŀè°ĥ Ċ Ġ* Ġ ä¿® è®¢ åİĨåı² ï¼ļ Ċ Ġ* Ġ================================= =============== Ċ Ġ*/ Ċ internal Ġclass ĠD okit Activity Lifecycle Callbacks Ġ: ĠApplication . Activity Lifecycle Callbacks Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġstarted Activity Counts Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġs Has Request Permission Ġ= Ġfalse ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġfragment Ġ çĶŁåĳ½ åĳ¨æľŁ åĽŀè°ĥ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġs Fragment Lifecycle Callbacks : ĠFragment Manager . Fragment Lifecycle Callbacks Ġ= ĠD okit Fragment Lifecycle Callbacks () ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( activity : ĠActivity ?, ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecord Activity Life Cycle Status ( it , ĠL IF E _ CYCLE _ STATUS _ CREATE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ignore Current Activity D okit View ( it )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġis ĠFragment Activity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æ³¨åĨĮ fragment çĶŁåĳ½ åĳ¨æľŁ åĽŀè°ĥ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . support FragmentManager . register Fragment Lifecycle Callbacks ( s Fragment Lifecycle Callbacks , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Started ( activity : ĠActivity ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ignore Current Activity D okit View ( it )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( started Activity Counts Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠD okit View Manager . instance . notify Foreground () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstarted Activity Counts ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Res umed ( activity : ĠActivity ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecord Activity Life Cycle Status ( it , ĠL IF E _ CYCLE _ STATUS _ RE SU ME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// è®°å½ķ é¡µéĿ¢ å±Ĥ çº§ Ġ åģ ¥ åº· ä½ĵ æ£Ģ éľĢè¦ģ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . java Class . canonical Name Ġ!= Ġ" com . did ich ux ing . d ora emon kit . kit . base . Universal Activity ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// record Activity Ui Level ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// å¦Ĥæŀľ æĺ¯ leak Can ary é¡µéĿ¢ ä¸į è¿Ľè¡Į æ·»åĬł ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ignore Current Activity D okit View ( it )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// è®¾ç½® app çļĦ çĽ´æİ¥ åŃĲ view çļĦ Id ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUI Utils . get D okit App ContentView ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// æ·»åĬł D okit View ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresume And Attach D okit Views ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( listener Ġin ĠLifecycle Listener Util . LI FE CYCLE _ LIST EN ERS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . on Activity Res umed ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Paused ( activity : ĠActivity ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ignore Current Activity D okit View ( it )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( listener Ġin ĠLifecycle Listener Util . LI FE CYCLE _ LIST EN ERS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . on Activity Paused ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠD okit View Manager . instance . on Activity Pause ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Stopped ( activity : ĠActivity ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecord Activity Life Cycle Status ( it , ĠL IF E _ CYCLE _ STATUS _ STOP PED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ignore Current Activity D okit View ( it )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstarted Activity Counts -- ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// éĢļçŁ¥ app éĢĢåĩº åĪ° åĲİåı° ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( started Activity Counts Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠD okit View Manager . instance . notify Background () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// app Ġ åĪĩæį¢ åĪ° åĲİåı° Ġ ä¸Ĭä¼ł åŁ ĭ çĤ¹ æķ°æį® ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// TODO (" åĬŁèĥ½ éľĢè¦ģ å®ŀçİ° ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Data Pick Manager . getInstance (). post Data () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Save InstanceState ( activity : ĠActivity ?, Ġout State : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ignore Current Activity D okit View ( it )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Destroyed ( activity : ĠActivity ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecord Activity Life Cycle Status ( it , ĠL IF E _ CYCLE _ STATUS _ DESTROY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ignore Current Activity D okit View ( it )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// æ³¨ éĶĢ fragment çļĦ çĶŁåĳ½ åĳ¨æľŁ åĽŀè°ĥ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġis ĠFragment Activity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . support FragmentManager . unregister Fragment Lifecycle Callbacks ( s Fragment Lifecycle Callbacks ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠD okit View Manager . instance . on Activity Destroy ( activity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æĺ¾ç¤º æīĢæľī åºĶè¯¥ æĺ¾ç¤º çļĦ d okit View ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġactivity ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġresume And Attach D okit Views ( activity : ĠActivity ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( D okit Constant . IS _ NORMAL _ FLOAT _ MODE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æĺ¾ç¤º åĨħ ç½® d okit View Ġicon ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠD okit View Manager . instance . resume And Attach D okit Views ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æ Ĥ¬ æµ ® çªĹ æĿĥéĻĲ Ġv ivo Ġ åįİ ä¸º åı¯ä»¥ ä¸įéľĢè¦ģ åĬ¨æĢģ æĿĥéĻĲ Ġå°ı ç±³ éľĢè¦ģ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Permission Util . can Draw Overlay s ( it )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠD okit View Manager . instance . resume And Attach D okit Views ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// è¯·æ±Ĥ æ Ĥ¬ æµ ® çªĹ æĿĥéĻĲ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Permission ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè¯·æ±Ĥ æ Ĥ¬ æµ ® çªĹ æĿĥéĻĲ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġrequest Permission ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! Permission Util . can Draw Overlay s ( context ) Ġ&& Ġ! s Has Request Permission ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġcontext . getText ( R . string . dk _ float _ permission _ toast ), ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// è¯·æ±Ĥ æ Ĥ¬ æµ ® çªĹ æĿĥéĻĲ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPermission Util . request Draw Overlay s ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs Has Request Permission Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ è®°å½ķ å½ĵåīį activity çļĦ U IL e vel ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġactivity ĊĠĠĠĠ Ġ*/ Ċ // ĠĠĠ Ġprivate Ġfun Ġrecord Activity Ui Level ( activity : ĠActivity ) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġtry Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! D okit Constant . APP _ HE ALTH _ RUNNING ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Infos Ġ= ĠUI Performance Util . getView Infos ( activity ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmax Level Ġ= Ġ 0 Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmax Time Ġ= Ġ 0 f Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtotal Time Ġ= Ġ 0 f Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmax Level View Info : ĠView Info ? Ġ= Ġnull Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmax Time View Info : ĠView Info ? Ġ= Ġnull Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( view Info Ġin Ġview Infos ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( view Info . layer Num Ġ> Ġmax Level ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Level Ġ= Ġview Info . layer Num Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Level View Info Ġ= Ġview Info Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( view Info . draw Time Ġ> Ġmax Time ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Time Ġ= Ġview Info . draw Time Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Time View Info Ġ= Ġview Info Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Time Ġ+= Ġview Info . draw Time Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdetail Ġ= Ġ""" Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ æľĢå¤§ å±Ĥ çº§ :$ max Level Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ æİ§ä»¶ id :${ if Ġ( max Level View Info Ġ== Ġnull ) Ġ" no Ġid " Ġelse Ġmax Level View Info . id } Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ æĢ» ç»ĺ åĪ¶ èĢĹ æĹ¶ :${ total Time } ms Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ç»ĺ åĪ¶ èĢĹ æĹ¶ æľĢ éķ¿ æİ§ä»¶ :${ max Time } ms Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ç»ĺ åĪ¶ èĢĹ æĹ¶ æľĢ éķ¿ æİ§ä»¶ id :${ if Ġ( max Time View Info Ġ== Ġnull ) Ġ" no Ġid " Ġelse Ġmax Time View Info . id } Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġui Level Bean Ġ= ĠUi Level Bean () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġui Level Bean . page Ġ= Ġactivity . java Class . canonical Name Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġui Level Bean . level Ġ= Ġ"" Ġ+ Ġmax Level Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġui Level Bean . detail Ġ= Ġdetail Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠApp Health Info Util . getInstance (). add Ui Level Info ( ui Level Bean ) Ċ // ĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ è®°å½ķ å½ĵåīį Activity çļĦ çĶŁåĳ½ åĳ¨æľŁ çĬ¶æĢģ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġrecord Activity Life Cycle Status ( activity : ĠActivity , Ġlife Cycle Status : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġactivity L ifec ay cle Info Ġ= ĠD okit Constant . ACTIVITY _ LI FE CYCLE _ INFO S [ activity . java Class . canonical Name ] ĊĠĠĠĠĠĠĠ Ġif Ġ( activity L ifec ay cle Info Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity L ifec ay cle Info Ġ= ĠActivity Lifecycle Info () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity L ifec ay cle Info . activity Name Ġ= Ġactivity . java Class . canonical Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( life Cycle Status Ġ== ĠL IF E _ CYCLE _ STATUS _ CREATE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity L ifec ay cle Info . activity Life Cycle Count Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( life Cycle Status Ġ== ĠL IF E _ CYCLE _ STATUS _ RE SU ME ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity L ifec ay cle Info . activity Life Cycle Count Ġ= Ġactivity L ifec ay cle Info . activity Life Cycle Count Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( life Cycle Status Ġ== ĠL IF E _ CYCLE _ STATUS _ STOP PED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity L ifec ay cle Info . is Invoke Stop Method Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠD okit Constant . ACTIVITY _ LI FE CYCLE _ INFO S [ activity . java Class . canonical Name !! ] Ġ= Ġactivity L ifec ay cle Info ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity L ifec ay cle Info . activity Name Ġ= Ġactivity . java Class . canonical Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( life Cycle Status Ġ== ĠL IF E _ CYCLE _ STATUS _ CREATE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity L ifec ay cle Info . activity Life Cycle Count Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( life Cycle Status Ġ== ĠL IF E _ CYCLE _ STATUS _ RE SU ME ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity L ifec ay cle Info . activity Life Cycle Count Ġ= Ġactivity L ifec ay cle Info . activity Life Cycle Count Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( life Cycle Status Ġ== ĠL IF E _ CYCLE _ STATUS _ STOP PED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity L ifec ay cle Info . is Invoke Stop Method Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( life Cycle Status Ġ== ĠL IF E _ CYCLE _ STATUS _ DESTROY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠD okit Constant . ACTIVITY _ LI FE CYCLE _ INFO S . remove ( activity . java Class . canonical Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġæĺ¯åĲ¦ å¿½ çķ¥ åľ¨ å½ĵåīį çļĦ activity ä¸Ĭ æĺ¾ç¤º æµ ® æłĩ ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġactivity ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġignore Current Activity D okit View ( activity : ĠActivity ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġignore Activity ClassNames Ġ= ĠarrayOf (" Display Leak Activity ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( activity ClassName Ġin Ġignore Activity ClassNames ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity . java Class . simple Name Ġ== Ġactivity ClassName ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠActivity ĠåĪĽå»º ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠL IF E _ CYCLE _ STATUS _ CREATE Ġ= Ġ 1 0 0 ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠActivity Ġresume ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠL IF E _ CYCLE _ STATUS _ RE SU ME Ġ= Ġ 1 0 1 ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠActivity Ġstop ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠL IF E _ CYCLE _ STATUS _ STOP PED Ġ= Ġ 1 0 2 ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠActivity Ġdestroy ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠL IF E _ CYCLE _ STATUS _ DESTROY Ġ= Ġ 1 0 3 ĊĠĠĠ Ġ} Ċ Ċ }