package Ġcom . y up fe g . base . tools . process Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Application Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġandroidx . lifecycle .* Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Supervisor Job Ċ Ċ /** Ċ Ġ* Ġä¸º æķ´ä¸ª åºĶçĶ¨ç¨ĭåºı è¿Ľç¨ĭ æıĲä¾Ľ çĶŁåĳ½ åĳ¨æľŁ çļĦ ç±» ãĢĤ Ċ Ġ* Ġ* Ġåı¯ä»¥ å°Ĩ æŃ¤ ĠLifecycle Owner Ġ è§Ĩ ä¸º æīĢæľī åºĶçĶ¨ æ´»åĬ¨ çļĦ ç»ĦåĲĪ ãĢĤ Ċ Ġ* ĠĠ Ġ ä½Ĩ ` Lifecycle . Event . ON _ CREATE ` å°Ĩ åıª è¢« è°ĥ åº¦ ä¸Ģæ¬¡ ï¼Į èĢĮ ` Lifecycle . Event . ON _ DESTROY ` å°Ĩ æ°¸ è¿ľ ä¸įä¼ļ è¢« è°ĥ åº¦ ãĢĤ Ċ Ġ* Ġ* Ġ åıĤèĢĥ ` jet pack Ġlifecycle - process ` åºĵ ï¼Į å°ģè£ħ ä¸Ģä¸ª åħ¨å±Ģ Application çļĦ çĶŁåĳ½ åĳ¨æľŁ Ċ Ġ* Ġ* Ġ æķ´ åĲĪ è¿Ľ åħ¨å±Ģ çļĦ Activity æłĪ ï¼Į æĸ¹ä¾¿ å¿« æį · æĵįä½ľ Activity Ċ Ġ* Ġ* Ġ æķ´ åĲĪ æķ´ä¸ª åºĶçĶ¨ èĮĥåĽ´ çļĦ åįı ç¨ĭ ä½ľçĶ¨ åŁŁ ï¼Į æĽ¿ ä»£ ` Global Scope ` Ċ Ġ* Ġ* Ġåľ¨ æķ´ä¸ª åºĶçĶ¨ç¨ĭåºı ä¸Ń ï¼Į æİ¨èįĲ åıª åĪĽå»º ä¸Ģæ¬¡ ï¼Į åľ¨ å¤ļ è¿Ľç¨ĭ æĥħåĨµä¸ĭ ï¼Į åıª éľĢè¦ģ æ£Ģæµĭ ä¸Ģæ¬¡ åĪĿå§ĭåĮĸ ä¸Ģæ¬¡ åį³åı¯ ãĢĤ Ċ Ġ* Ġ@ author Ġy u P Fe G Ċ Ġ* Ġ@ date Ġ 2 0 2 2 / 0 3 / 2 8 Ċ Ġ*/ Ċ object ĠProcess Lifecycle Owner Ġ: ĠLifecycle Owner , ĠViewModel Store Owner Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç¡®è®¤ åºĶçĶ¨ è¿Ľåħ¥ åĲİåı° çļĦ è¶ħæĹ¶ æĹ¶éĹ´ ï¼Į é»ĺè®¤ä¸º 7 0 0 ms ï¼Į ĊĠĠĠĠ Ġ* Ġ- Ġ ç¡® ä¿Ŀ èĥ½å¤Ł è¿ĩæ»¤ å±ı å¹ķ æĹ ĭ è½¬ å¯¼èĩ´ çļĦ Activity éĩį å»º ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġprivate Ġconst Ġval ĠTIME OUT _ MS Ġ: ĠLong Ġ= Ġ 7 0 0 ĊĊĠĠĠ Ġ/** æıĲä¾Ľ åħ¨å±Ģ è¿Ľç¨ĭ èĮĥåĽ´ çļĦ ViewModel ä½ľçĶ¨ åŁŁ */ ĊĠĠĠ Ġprivate Ġvar Ġm App ViewModel Store Ġ: ĠViewModel Store ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġactivity ç¼ĵåŃĺ ç®¡çĲĨ æłĪ ĊĠĠĠĠ Ġ* Ġ- Ġ æĸ¹ä¾¿ ç§»éĻ¤ ç»ĵæĿŁ æĮĩå®ļ Activity ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġval Ġactivity Stack Ġ: ĠActivity Stack Helper Ġ= ĠActivity Stack Helper () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLifecycle äºĭä»¶ åĪĨ åıĳ åĻ¨ ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Registry Ġ: ĠLifecycle Registry ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġå½ĵåīį è¿Ľåħ¥ onStart çļĦ æ´»åĬ¨ è®¡ æķ° åĻ¨ ĊĠĠĠĠ Ġ* Ġ- Ġ å¤Ħ äºİ onStart æĹ¶ + 1 ï¼Į å¤Ħ äºİ on Stop æĹ¶ - 1 ï¼Į åĲĮ ä¸Ģ æĹ¶ åĪ» æľī ä¸Ķ åıªæľī 1 ä¸ª åīį åı° Activity ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Started Counter Ġ= Ġ 0 ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġå½ĵåīį è¿Ľåħ¥ on Resume çļĦ è§ĨåĽ¾ è®¡ æķ° åĻ¨ ĊĠĠĠĠ Ġ* Ġ- Ġ å¤Ħ äºİ on Resume æĹ¶ + 1 ï¼Į å¤Ħ äºİ on Pause æĹ¶ - 1 ï¼Į åĲĮ ä¸Ģ æĹ¶ åĪ» æľī ä¸Ķ åıªæľī 1 ä¸ª åīį åı° Activity ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Res umed Counter Ġ= Ġ 0 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæĺ¯åĲ¦ å·² åĪĨ åıĳ stop äºĭä»¶ ĊĠĠĠĠ Ġ* Ġ- Ġ å¿ħé¡» è¦ģ åĪĿå§ĭ ä¸º true ï¼Į åľ¨ ç¬¬ ä¸Ģæ¬¡ åĲ¯åĬ¨ æĹ¶ å°Ĩ onStart çĶŁåĳ½ åĳ¨æľŁ åĪĨ åıĳ ï¼Į ĊĠĠĠĠ Ġ* Ġ åĲ¦åĪĻ ç¬¬ ä¸Ģæ¬¡ è¿Ľåħ¥ åĲİåı° æĹ¶ ï¼Į on Pause åĪĨ åıĳ æĹ¶ ä¼ļ åħĪ åĪĨ åıĳ æľĢå°ı çļĦ çĶŁåĳ½ åĳ¨æľŁ ï¼Į ĊĠĠĠĠ Ġ* Ġ åıĤ è§ģ [ Lifecycle Registry . Observer With State . dispatchEvent ] çļĦ éĢ»è¾ĳ ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Sent Stop Event Ġ: ĠBoolean Ġ= Ġtrue ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæĺ¯åĲ¦ å·² åĪĨ åıĳ pause äºĭä»¶ ĊĠĠĠĠ Ġ* Ġ- Ġ å¿ħé¡» è¦ģ åĪĿå§ĭ ä¸º true ï¼Į åľ¨ ç¬¬ ä¸Ģæ¬¡ åĲ¯åĬ¨ æĹ¶ å°Ĩ On Resume çĶŁåĳ½ åĳ¨æľŁ åĪĨ åıĳ ï¼Į ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Sent Pause Event Ġ: ĠBoolean Ġ= Ġtrue ĊĊĠĠĠ Ġprivate Ġvar Ġm Handler Ġ: ĠHandler Ġ= ĠHandler ( Looper . get Main Looper ()) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠApp èĮĥåĽ´ åįı ç¨ĭ ä½ľçĶ¨ åŁŁ ĊĠĠĠĠ Ġ* Ġ* Ġä¸į éľĢè¦ģ åıĸæ¶Ī è¿Ļä¸ª ä½ľçĶ¨ åŁŁ ï¼Į åĽłä¸º å®ĥ ä¼ļ éļı çĿĢ è¿Ľç¨ĭ ç»ĵæĿŁ èĢĮ ç»ĵæĿŁ ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġval Ġapplication Scope Ġ: ĠCor outine Scope ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġm Application Scope Ġ?: Ġcreate Application Scope () ĊĠĠĠ Ġprivate Ġvar Ġm Application Scope Ġ: ĠCor outine Scope ?= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ çŃīå¾ħ ç¨ĭåºı è¿Ľåħ¥ åĲİåı° çļĦ å»¶ è¿ Ł ä»»åĬ¡ ĊĠĠĠĠ Ġ* Ġ- ĠéľĢè¦ģ å»¶ è¿ Ł è¶³ å¤Ł éķ¿ æĹ¶éĹ´ ï¼Į ä»¥ ç¡® ä¿Ŀ çĶ±äºİ éħįç½® æĽ´æĶ¹ çŃī æĵįä½ľ éĩį å»º Ġactivity ĠæĹ¶ ä¸įä¼ļ åĪĨ åıĳ ä»»ä½ķ äºĭä»¶ ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġm Background Delay Task Ġ: ĠRunnable Ġ= ĠRunnable Ġ{ ĊĠĠĠĠĠĠĠ Ġ// å·² ç¡®å®ļ è¿Ľåħ¥ åĲİåı° ï¼Į å¼Ģå§ĭ åĪĨ åıĳ äºĭä»¶ ĊĠĠĠĠĠĠĠ Ġdispatch Pause IfNeeded () ĊĠĠĠĠĠĠĠ Ġdispatch Stop IfNeeded () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Lifecycle (): ĠLifecycle Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm Registry ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: throw ĠNullPointerException (" you Ġshould Ġinit ĠProcess Lifecycle Owner Ġon ĠApplication ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠæıĲ ä¾Ľ ViewModel ä½ľçĶ¨ åŁŁ ĊĠĠĠĠ Ġ* Ġ- Ġ çĽ¸ å½ĵ äºİ åħ¨å±Ģ åįķ ä¾ĭ ï¼Į çĶŁåĳ½ åĳ¨æľŁ è·Ł éļı åºĶçĶ¨ è¿Ľç¨ĭ ĊĠĠĠĠ Ġ* Ġ- Ġåı¯ä»¥ æŃ¤ æĿ¥ åĢ Ł åĬ© ĠApplication ĠæĿ¥ ç®¡çĲĨ ä¸Ģä¸ª åºĶçĶ¨ çº§ ĠçļĦ ĠShared ViewModel ï¼Į ĊĠĠĠĠ Ġ* Ġ å®ŀçİ° åħ¨ åºĶçĶ¨ èĮĥåĽ´ åĨħ çļĦ Ġ çĶŁåĳ½ åĳ¨æľŁ å®īåħ¨ Ġ ä¸Ķ Ġ äºĭä»¶ æºĲ åı¯ è¿½ æº ¯ çļĦ Ġ è§ĨåĽ¾ æİ§åĪ¶åĻ¨ Ġ äºĭä»¶ éĢļçŁ¥ ãĢĤ ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġget ViewModel Store (): ĠViewModel Store Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm App ViewModel Store ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: throw ĠNullPointerException (" you Ġshould Ġinit ĠProcess Lifecycle Owner Ġon ĠApplication ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æł¡éªĮ å½ĵåīį åºĶçĶ¨ç¨ĭåºı æĺ¯åĲ¦ å¤Ħ äºİ åīį åı° ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġval Ġis Foreground Ġ: ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġlifecycle . currentState . is At Least ( Lifecycle . State . STARTED ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġåľ¨ ` Application ` åĪĿå§ĭåĮĸ ï¼Į æĪĸèĢħ åľ¨ ` Content Provider ` åĪĿå§ĭåĮĸ ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġinit ( context : ĠContext ){ ĊĠĠĠĠĠĠĠ Ġattach ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç»ĳå®ļ åºĶçĶ¨ çĶŁåĳ½ åĳ¨æľŁ ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġattach ( context Ġ: ĠContext ){ ĊĠĠĠĠĠĠĠ Ġm Registry Ġ= ĠLifecycle Registry ( this ) ĊĠĠĠĠĠĠĠ Ġm App ViewModel Store Ġ= ĠViewModel Store () ĊĠĠĠĠĠĠĠ Ġ// åĪĨ åıĳ onCreate äºĭä»¶ ï¼Į æŃ£å¸¸ æľī ä¸Ķ åıª ä¼ļ åĪĨ åıĳ ä¸Ģæ¬¡ ĊĠĠĠĠĠĠĠ Ġm Registry ?. handle Lifecycle Event ( Lifecycle . Event . ON _ CREATE ) ĊĠĠĠĠĠĠĠ Ġval Ġapp Ġ= Ġ( context . application Context Ġas ? ĠApplication ) ĊĠĠĠĠĠĠĠ Ġapp ?. register Activity Lifecycle Callbacks ( object Ġ: ĠDefault Activity Lifecycle Callback (){ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress Lint (" Restricted Api ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Created ( activity : ĠActivity , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æ·»åĬł åĪ° activity ç®¡çĲĨ æłĪ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Stack . add Activity To Stack ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Post Started ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo On Activity Start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Post Res umed ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo On Activity Resume () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Paused ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo On Activity Pause () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Stopped ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo On Activity Stop () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Destroyed ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ç§»éĻ¤ activity æłĪ ä¸ŃçļĦ å¯¹åºĶ åħĥç´ł ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Stack . remove Activity For Stack ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠActivity è¿Ľåħ¥ onStart äºĭä»¶ ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdo On Activity Start (){ ĊĠĠĠĠĠĠĠ Ġm Started Counter ++ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Started Counter Ġ== Ġ 1 Ġ&& Ġm Sent Stop Event ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// åºĶçĶ¨ ç¬¬ ä¸Ģæ¬¡ åĲ¯åĬ¨ æĪĸ ä»İ åĲİåı° éĩįæĸ° è¿Ľåħ¥ ï¼Į åĪĨ åıĳ onStart äºĭä»¶ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Registry ?. handle Lifecycle Event ( Lifecycle . Event . ON _ START ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Sent Stop Event Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠActivity è¿Ľåħ¥ on Resume äºĭä»¶ ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdo On Activity Resume (){ ĊĠĠĠĠĠĠĠ Ġm Res umed Counter ++ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Res umed Counter Ġ== Ġ 1 ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Sent Pause Event ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// åºĶçĶ¨ ç¬¬ ä¸Ģæ¬¡ åĲ¯åĬ¨ æĪĸ ä»İ åĲİåı° éĩįæĸ° è¿Ľåħ¥ ï¼Į åĪĨ åıĳ on Resume äºĭä»¶ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Registry ?. handle Lifecycle Event ( Lifecycle . Event . ON _ RE SU ME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Sent Pause Event Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// è¿ĺ å¤Ħ äºİ çŃīå¾ħ è¿Ľåħ¥ åĲİåı° éĺ¶æ®µ ï¼Į ç§»éĻ¤ æŃ£åľ¨ çŃīå¾ħ çļĦ å»¶ è¿ Ł ä»»åĬ¡ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Handler . remove Callbacks ( m Background Delay Task ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠActivity è¿Ľåħ¥ on Pause äºĭä»¶ ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdo On Activity Pause (){ ĊĠĠĠĠĠĠĠ Ġm Res umed Counter -- ĊĠĠĠĠĠĠĠ Ġif Ġ( m Res umed Counter Ġ== Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// å½ĵåīį å·² æ²¡æľī æ´» è· ĥ çļĦ è§ĨåĽ¾ ï¼Į è¿Ľåħ¥ å»¶ è¿ Ł çŃīå¾ħ è¿Ľåħ¥ åĲİåı° éĺ¶æ®µ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Handler . post Delayed ( m Background Delay Task , TIMEOUT _ MS ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠActivity è¿Ľåħ¥ on Stop äºĭä»¶ ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdo On Activity Stop (){ ĊĠĠĠĠĠĠĠ Ġm Started Counter -- ĊĠĠĠĠĠĠĠ Ġdispatch Stop IfNeeded () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪĨ åıĳ åºĶçĶ¨ç¨ĭåºı å¤Ħ äºİ åĲİåı° çļĦ äºĭä»¶ ï¼Į æŃ¤ æĹ¶ ä»£è¡¨ åºĶçĶ¨ å·² è¿Ľåħ¥ åĲİåı° ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdispatch Pause IfNeeded (){ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Res umed Counter Ġ== Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// çŃīå¾ħ è¶ħæĹ¶ åĲİ ä¾Ŀ çĦ¶ æ²¡æľī è§ĨåĽ¾ å¤Ħ äºİ åīį åı° ï¼Į åĪĻ åĪĨ åıĳ on Pause ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Sent Pause Event Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Registry ?. handle Lifecycle Event ( Lifecycle . Event . ON _ PAUSE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪĨ åıĳ åºĶçĶ¨ç¨ĭåºı å¤Ħ äºİ åĲİåı° çļĦ äºĭä»¶ ï¼Į æŃ¤ æĹ¶ ä»£è¡¨ åºĶçĶ¨ å·² è¿Ľåħ¥ åĲİåı° ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdispatch Stop IfNeeded (){ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Started Counter Ġ== Ġ 0 Ġ&& Ġm Sent Pause Event ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// è§ĨåĽ¾ æ²¡æľī å¤Ħ äºİ åīį åı° ï¼Į å¹¶ä¸Ķ å·² åĪĨ åıĳ äºĨ on Pause ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Registry ?. handle Lifecycle Event ( Lifecycle . Event . ON _ STOP ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Sent Stop Event Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪĽå»º App èĮĥåĽ´ çļĦ åįı ç¨ĭ ä½ľçĶ¨ åŁŁ ĊĠĠĠĠ Ġ* Ġ éĢļå¸¸ çĶ¨äºİ ä¸į è·Ł éļı UI è§ĨåĽ¾ çļĦ åĲİåı° åįı ç¨ĭ ä»»åĬ¡ ä½¿çĶ¨ ĊĠĠĠĠ Ġ* Ġ- Ġ çĶ¨äºİ æĽ¿ ä»£ Global Scope ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcreate Application Scope () Ġ: ĠCor outine Scope { ĊĠĠĠĠĠĠĠ Ġ// ä½¿çĶ¨ Supervisor Job ï¼Į ä¸įä¼ļ è®© ä½ľçĶ¨ åŁŁ åĨħ çļĦ åįı ç¨ĭ åĩºçİ° å¼Ĥå¸¸ åĲİ ï¼Į å½±åĵį æķ´ä¸ª ä½ľçĶ¨ åŁŁ åĨħ æīĢæľī åįı ç¨ĭ çļĦ è¿Ĳè¡Į ĊĠĠĠĠĠĠĠ Ġreturn ĠCor outine Scope ( Supervisor Job () Ġ+ ĠDispatch ers . Main . immediate ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġm Application Scope Ġ= Ġit Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ private Ġopen Ġclass ĠDefault Activity Lifecycle Callback Ġ: ĠApplication . Activity Lifecycle Callbacks { ĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( activity : ĠActivity , ĠsavedInstanceState : ĠBundle ?) Ġ= ĠUnit ĊĠĠĠ Ġoverride Ġfun Ġon Activity Started ( activity : ĠActivity ) Ġ= ĠUnit ĊĠĠĠ Ġoverride Ġfun Ġon Activity Res umed ( activity : ĠActivity ) Ġ= ĠUnit ĊĠĠĠ Ġoverride Ġfun Ġon Activity Paused ( activity : ĠActivity ) Ġ= ĠUnit ĊĠĠĠ Ġoverride Ġfun Ġon Activity Stopped ( activity : ĠActivity ) Ġ= ĠUnit ĊĠĠĠ Ġoverride Ġfun Ġon Activity Save InstanceState ( activity : ĠActivity , Ġout State : ĠBundle ) Ġ= ĠUnit ĊĠĠĠ Ġoverride Ġfun Ġon Activity Destroyed ( activity : ĠActivity ) Ġ= ĠUnit Ċ }