package Ġcom . l zf . easy float . utils Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Application Ċ import Ġandroid . os . Bundle Ċ import Ġcom . l zf . easy float . core . Floating WindowManager Ċ import Ġjava . lang . ref . Weak Reference Ċ Ċ /** Ċ Ġ* Ġ@ author : Ġli u zh en f eng Ċ Ġ* Ġ@ function : ĠéĢļè¿ĩ çĶŁåĳ½ åĳ¨æľŁ åĽŀè°ĥ ï¼Į åĪ¤æĸŃ ç³»ç»Ł æµ ® çªĹ çļĦ è¿ĩæ»¤ ä¿¡æģ¯ ï¼Į ä»¥åıĬ app æĺ¯åĲ¦ ä½į äºİ åīį åı° ï¼Į æİ§åĪ¶ æµ ® çªĹ æĺ¾ éļĲ Ċ Ġ* Ġ@ date : Ġ 2 0 1 9 - 0 7 - 1 1 ĠĠ 1 5 : 5 1 Ċ Ġ*/ Ċ internal Ġobject ĠLifecycle Utils Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġapplication : ĠApplication ĊĠĠĠ Ġprivate Ġvar Ġactivity Count Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġm Top Activity : ĠWeak Reference < Activity >? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġget Top Activity (): ĠActivity ? Ġ= Ġm Top Activity ?. get () ĊĊĠĠĠ Ġfun Ġset Lifecycle Callbacks ( application : ĠApplication ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . application Ġ= Ġapplication ĊĠĠĠĠĠĠĠ Ġapplication . register Activity Lifecycle Callbacks ( object Ġ: ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApplication . Activity Lifecycle Callbacks Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Created ( activity : ĠActivity , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Started ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Count ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Top Activity ?. clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Top Activity Ġ= ĠWeak Reference < Activity >( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġæ¯ı æ¬¡ éĥ½ è¦ģ åĪ¤æĸŃ å½ĵåīį é¡µéĿ¢ æĺ¯åĲ¦ éľĢè¦ģ æĺ¾ç¤º ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Show ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Res umed ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Paused ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Stopped ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ è®¡ç®Ĺ åħ³éĹŃ çļĦ activity æķ° çĽ® ï¼Į å¹¶ åĪ¤æĸŃ å½ĵåīį App æĺ¯åĲ¦ å¤Ħ äºİ åĲİåı° ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Count -- ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Hide ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Save InstanceState ( activity : ĠActivity , Ġout State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Destroyed ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪ¤æĸŃ æµ ® çªĹ æĺ¯åĲ¦ éľĢè¦ģ æĺ¾ç¤º ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcheck Show ( activity : ĠActivity ) Ġ= ĊĠĠĠĠĠĠĠ ĠFloating WindowManager . window Map . forEach Ġ{ Ġ( tag , Ġwindow ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . check Show ( activity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪ¤æĸŃ æµ ® çªĹ æĺ¯åĲ¦ éľĢè¦ģ éļĲèĹı ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcheck Hide ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġå¦Ĥæŀľ ä¸įæĺ¯ finish ï¼Į å¹¶ä¸Ķ å¤Ħ äºİ åīį åı° ï¼Į æĹł éľĢ åĪ¤æĸŃ ĊĠĠĠĠĠĠĠ Ġif Ġ(! activity . is Finish ing Ġ&& Ġis Foreground ()) Ġreturn ĊĠĠĠĠĠĠĠ ĠFloating WindowManager . window Map . forEach Ġ{ Ġ( tag , Ġwindow ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠåĪ¤æĸŃ æµ ® çªĹ æĺ¯åĲ¦ éľĢè¦ģ åħ³éĹŃ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . check Dismiss ( activity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Foreground () Ġ= Ġactivity Count Ġ> Ġ 0 Ċ Ċ }