package Ġcom . zh an . mv vm . delegate Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Application Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . collection . L ru Cache Ċ import Ġandroidx . fragment . app . Fragment Activity Ċ import Ġcom . zh an . mv vm . common . Activity Manager Ċ import Ġcom . zh an . mv vm . mv vm . IM vm Activity Ċ import Ġcom . zh an . mv vm . base . I Activity Ċ import Ġcom . zh an . mv vm . config . Setting Ċ Ċ /** Ċ Ġ* Ġ Ġ@ author : ĠHy J ame Ċ Ġ* Ġ Ġ@ date : ĠĠĠ 2 0 1 9 - 1 1 - 2 0 Ċ Ġ* Ġ Ġ@ desc : ĠĠ ĠTODO Ċ Ġ*/ Ċ object ĠActivity Lifecycle Ġ: ĠApplication . Activity Lifecycle Callbacks Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcache Ġby Ġlazy Ġ{ ĠL ru Cache < String , ĠActivity Delegate >( Setting . ACTIVITY _ CACHE _ SIZE ) Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( activity : ĠActivity ?, ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity ?. let Ġ{ ĠActivity Manager . add ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( activity Ġ! is ĠI Activity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġactivity Delegate Ġ= Ġfetch Activity Delegate ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġnew Delegate ( activity ). apply Ġ{ Ġcache . put ( getKey ( activity ), Ġthis ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġactivity Delegate . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġregister Fragment Callback ( activity ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġregister Fragment Callback ( activity : ĠActivity ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( activity Ġ! is ĠFragment Activity ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġactivity . support FragmentManager . register Fragment Lifecycle Callbacks ( Fragment Lifecycle , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Started ( activity : ĠActivity ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġfetch Activity Delegate ( activity )?. onStart () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Res umed ( activity : ĠActivity ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġfetch Activity Delegate ( activity )?. on Resume () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Paused ( activity : ĠActivity ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġfetch Activity Delegate ( activity )?. on Pause () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Stopped ( activity : ĠActivity ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġfetch Activity Delegate ( activity )?. on Stop () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Destroyed ( activity : ĠActivity ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity ?. let Ġ{ ĠActivity Manager . remove ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġfetch Activity Delegate ( activity )?. on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Save InstanceState ( activity : ĠActivity ?, Ġout State : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġfetch Activity Delegate ( activity )?. on Save InstanceState ( activity , Ġout State ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfetch Activity Delegate ( activity : ĠActivity ?): ĠActivity Delegate ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( activity Ġ! is ĠI Activity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcache . get ( getKey ( activity )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnew Delegate ( activity : ĠActivity ): ĠActivity Delegate Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( activity Ġis ĠIM vm Activity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠM vm Activity Delegate Impl ( activity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠActivity Delegate Impl ( activity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetKey ( activity : ĠActivity ): ĠString Ġ= Ġactivity . java Class . name Ġ+ Ġactivity . hashCode () Ċ }