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 . datap ick . Data Pick Manager Ċ import Ġcom . did ich ux ing . d ora emon kit . kit . core . Activity Lifecycle Status Info Ċ import Ġcom . did ich ux ing . d ora emon kit . kit . core . Do Kit Life Cycle Status Ċ import Ġcom . did ich ux ing . d ora emon kit . kit . core . Do Kit Manager Ċ import Ġcom . did ich ux ing . d ora emon kit . kit . core . Do Kit View Manager Ċ import Ġcom . did ich ux ing . d ora emon kit . kit . health . App Health Info Util Ċ import Ġcom . did ich ux ing . d ora emon kit . kit . health . model . App Health Info . Data Bean . Ui Level Bean Ċ import Ġcom . did ich ux ing . d ora emon kit . kit . ui performance . UI Performance Util Ċ import Ġcom . did ich ux ing . d ora emon kit . model . View Info Ċ import Ġcom . did ich ux ing . d ora emon kit . util . Do Kit Permission Util Ċ 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 . UI Utils Ċ Ċ /** Ċ Ġ* Ġ================================= =============== Ċ Ġ* Ġ ä½ľ ĠĠĠ Ġ èĢħ ï¼ļ jint ï¼Ī éĩĳ åı° ï¼ī Ċ Ġ* Ġ çīĪ ĠĠĠ Ġæľ¬ ï¼ļ 1 . 0 Ċ Ġ* ĠåĪĽå»º æĹ¥æľŁ ï¼ļ 2 0 1 9 - 1 2 - 3 1 - 1 0 : 0 4 Ċ Ġ* Ġæı ı ĠĠĠ Ġ è¿° ï¼ļ åħ¨å±Ģ çļĦ activity çĶŁåĳ½ åĳ¨æľŁ åĽŀè°ĥ Ċ Ġ* Ġ ä¿® è®¢ åİĨåı² ï¼ļ Ċ Ġ* Ġ================================= =============== Ċ Ġ*/ Ċ class ĠDo Kit Activity Lifecycle Callbacks Ġ: ĠApplication . Activity Lifecycle Callbacks Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġstarted Activity Counts Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġs Has Request Permission Ġ= Ġfalse ĊĠĠĠ Ġ// private ĠMap < String , ĠDo Kit Orientation EventListener > Ġm Orientation Event Listeners Ġ= Ġnew ĠHashMap <>(); ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġfragment Ġ çĶŁåĳ½ åĳ¨æľŁ åĽŀè°ĥ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġs Fragment Lifecycle Callbacks : ĠFragment Manager . Fragment Lifecycle Callbacks ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( activity : ĠActivity , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecord Activity Life Cycle Status ( activity , ĠDo Kit Life Cycle Status . CREATED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ignore Current Activity D okit View ( activity )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity Ġis ĠFragment Activity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æ³¨åĨĮ fragment çĶŁåĳ½ åĳ¨æľŁ åĽŀè°ĥ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . support FragmentManager . register Fragment Lifecycle Callbacks ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs Fragment Lifecycle Callbacks , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// æļĤ æĹ¶ æĹłæ³ķ å¾Ī å¥½çļĦ è§£åĨ³ å±ı å¹ķ æĹ ĭ è½¬ çļĦéĹ®é¢ĺ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Do Kit Orientation EventListener Ġorientation EventListener Ġ= Ġnew ĠDo Kit Orientation EventListener ( activity ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// orientation EventListener . enable (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// m Orientation Event Listeners . put ( activity . getClass (). getSimpleName (), Ġorientation EventListener ); ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Started ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ignore Current Activity D okit View ( activity )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( started Activity Counts Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDo Kit View Manager . INSTANCE . notify Foreground () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstarted Activity Counts ++ ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Res umed ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecord Activity Life Cycle Status ( activity , ĠDo Kit Life Cycle Status . RE SU ME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// è®°å½ķ é¡µéĿ¢ å±Ĥ çº§ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity . 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 ( activity )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// è®¾ç½® app çļĦ çĽ´æİ¥ åŃĲ view çļĦ Id ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUI Utils . get D okit App ContentView ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdispatch On Activity Res umed ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( listener Ġin ĠLifecycle Listener Util . LI FE CYCLE _ LIST EN ERS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . on Activity Res umed ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Paused ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ignore Current Activity D okit View ( activity )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( listener Ġin ĠLifecycle Listener Util . LI FE CYCLE _ LIST EN ERS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . on Activity Paused ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDo Kit View Manager . INSTANCE . on Activity Paused ( activity ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Stopped ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecord Activity Life Cycle Status ( activity , ĠDo Kit Life Cycle Status . STOP PED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ignore Current Activity D okit View ( activity )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstarted Activity Counts -- ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// éĢļçŁ¥ app éĢĢåĩº åĪ° åĲİåı° ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( started Activity Counts Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDo Kit View Manager . INSTANCE . notify Background () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// app Ġ åĪĩæį¢ åĪ° åĲİåı° Ġ ä¸Ĭä¼ł åŁ ĭ çĤ¹ æķ°æį® ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠData Pick Manager . getInstance (). post Data () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDo Kit View Manager . INSTANCE . on Activity Stopped ( activity ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Save InstanceState ( activity : ĠActivity , Ġout State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ignore Current Activity D okit View ( activity )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Destroyed ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecord Activity Life Cycle Status ( activity , ĠDo Kit Life Cycle Status . DESTROY ED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ignore Current Activity D okit View ( activity )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// æ³¨ éĶĢ fragment çļĦ çĶŁåĳ½ åĳ¨æľŁ åĽŀè°ĥ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity Ġis ĠFragment Activity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . support FragmentManager . unregister Fragment Lifecycle Callbacks ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs Fragment Lifecycle Callbacks ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDo Kit View Manager . INSTANCE . on Activity Destroyed ( activity ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// æļĤ æĹ¶ æĹłæ³ķ å¾Ī å¥½çļĦ è§£åĨ³ å±ı å¹ķ æĹ ĭ è½¬ çļĦéĹ®é¢ĺ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Do Kit Orientation EventListener Ġorientation EventListener Ġ= Ġm Orientation Event Listeners . get ( activity . getClass (). getSimpleName ()); ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// if Ġ( orientation EventListener Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// orientation EventListener . disable (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// m Orientation Event Listeners . remove ( activity . getClass (). getSimpleName ()); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ//} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æĺ¾ç¤º æīĢæľī åºĶè¯¥ æĺ¾ç¤º çļĦ d okit View ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġactivity ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdispatch On Activity Res umed ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity . window . decor View . also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . post Ġ{ ĠDo Kit Env . window Size . set ( it . width , Ġit . height ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( Do Kit Manager . IS _ NORMAL _ FLOAT _ MODE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// æĺ¾ç¤º åĨħ ç½® d okit View Ġicon ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDo Kit View Manager . INSTANCE . dispatch On Activity Res umed ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠFIXME : Ġconsider Ġhandle Ġpermission Ġdown Ġto Ġactivity - layer , Ġjust Ġdispatch Ġres umed - event Ġhere ĊĠĠĠĠĠĠĠ Ġ// æ Ĥ¬ æµ ® çªĹ æĿĥéĻĲ Ġv ivo Ġ åįİ ä¸º åı¯ä»¥ ä¸įéľĢè¦ģ åĬ¨æĢģ æĿĥéĻĲ Ġå°ı ç±³ éľĢè¦ģ ĊĠĠĠĠĠĠĠ Ġif Ġ( Do Kit Permission Util . can Draw Overlay s ( activity )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDo Kit View Manager . INSTANCE . dispatch On Activity Res umed ( activity ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// è¯·æ±Ĥ æ Ĥ¬ æµ ® çªĹ æĿĥéĻĲ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Permission ( activity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè¯·æ±Ĥ æ Ĥ¬ æµ ® çªĹ æĿĥéĻĲ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġrequest Permission ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! Do Kit 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 () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// è¯·æ±Ĥ æ Ĥ¬ æµ ® çªĹ æĿĥéĻĲ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDo Kit 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 Ġ(! Do Kit Manager . 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 : ĠDo Kit Life Cycle Status ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġactivity Life Cycle Status Info : ĠActivity Lifecycle Status Info ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDo Kit Manager . ACTIVITY _ LI FE CYCLE _ INFO S [ activity . java Class . canonical Name ] ĊĊĠĠĠĠĠĠĠ Ġif Ġ( activity Life Cycle Status Info Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Life Cycle Status Info Ġ= ĠActivity Lifecycle Status Info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Invoke Stop Method Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlife Cycle Status Ġ= ĠDo Kit Life Cycle Status . CREATED , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Name Ġ= Ġactivity . java Class . canonical Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠDo Kit Manager . ACTIVITY _ LI FE CYCLE _ INFO S [ activity . java Class . canonical Name !! ] Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Life Cycle Status Info ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( life Cycle Status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDo Kit Life Cycle Status . CREATED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Life Cycle Status Info . life Cycle Status Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDo Kit Life Cycle Status . CREATED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDo Kit Life Cycle Status . RE SU ME Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Life Cycle Status Info . life Cycle Status Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDo Kit Life Cycle Status . RE SU ME ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDo Kit Life Cycle Status . STOP PED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Life Cycle Status Info . life Cycle Status Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDo Kit Life Cycle Status . STOP PED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Life Cycle Status Info . is Invoke Stop Method Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDo Kit Life Cycle Status . DESTROY ED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDo Kit Manager . ACTIVITY _ LI FE CYCLE _ INFO S . remove ( activity . java Class . canonical Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Activity Lifecycle Callback " ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġæĺ¯åĲ¦ å¿½ çķ¥ åľ¨ å½ĵåīį çļĦ 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 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġs Fragment Lifecycle Callbacks Ġ= ĠDo Kit Fragment Lifecycle Callbacks () ĊĠĠĠ Ġ} Ċ } Ċ