package Ġcom . y up fe g . base . tools . databinding . proxy Ċ Ċ import Ġandroidx . activity . Component Activity Ċ import Ġandroidx . annotation . Layout Res Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . databinding . ViewData Binding Ċ import Ġandroidx . lifecycle . Lifecycle Ċ import Ġcom . y up fe g . base . tools . lifecycle . Auto Lifecycle State Observer Ċ import Ġkotlin . properties . ReadOnly Property Ċ import Ġkotlin . reflect . K Property Ċ Ċ /** Ċ Ġ* Ġ[ Component Activity ] æĭ ĵ å±ķ åĩ½æķ° ï¼Į éĢļè¿ĩ å±ŀæĢ§ å§Ķ æīĺ çļĦ by åħ³éĶ®åŃĹ ï¼Į èİ·åıĸ data Binding çļĦ å¯¹è±¡ Ċ Ġ* Ġ@ param ĠT Ġlayout å¯¹åºĶçļĦ Data Binding èĩªåĬ¨ çĶŁæĪĲ ç±» Ċ Ġ* Ġ@ param Ġlayout Id Ġ å¸ĥå±Ģ id Ċ Ġ* Ġ@ param Ġdo On Destroy Ġæī§è¡Į éľĢè¦ģ åĽŀ æĶ¶ Data Binding åĨħéĥ¨ åıĺéĩı çļĦ æĵįä½ľ ï¼Į åı¯ éĢī ï¼Į é»ĺè®¤ä¸º null Ċ Ġ*/ Ċ @ Suppress (" unused ") Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠView Data Binding > ĠComponent Activity . binding Activity ( ĊĠĠĠ Ġ@ Layout Res Ġlayout Id Ġ: ĠInt , Ġno inline Ġdo On Destroy Ġ: Ġ(( T ? )-> Unit )? Ġ= Ġnull Ċ ) Ġ= ĠActivity Data Binding Delegate ( layout Id , this . lifecycle , do On Destroy ) Ċ Ċ /** Ċ Ġ* Ġ[ Component Activity ] èİ·åıĸ ` Data Binding ` å®ŀä¾ĭ çļĦ å±ŀæĢ§ å§Ķ æīĺ ç±» Ċ Ġ* Ġ@ param Ġlayout Id Ġ å¸ĥå±Ģ Id Ċ Ġ* Ġ@ param Ġlifecycle Ġ[ Component Activity ] çļĦ lifecycle ï¼Į ä»ħ çĶ¨äºİ è®¢ éĺħ çĶŁåĳ½ åĳ¨æľŁ Ċ Ġ* Ġ@ author Ġy u P Fe G Ċ Ġ* Ġ@ date Ġ 2 0 2 1 / 0 3 / 0 9 Ċ Ġ*/ Ċ class ĠActivity Data Binding Delegate < T Ġ: ĠView Data Binding >( ĊĠĠĠ Ġ@ Layout Res Ġval Ġlayout Id Ġ: ĠInt , ĊĠĠĠ Ġlifecycle Ġ: ĠLifecycle , ĊĠĠĠ Ġprivate Ġval Ġdo On Destroy : Ġ(( T ?) Ġ-> ĠUnit )? Ġ= Ġnull , Ċ ) Ġ: ĠReadOnly Property < Component Activity , T >{ ĊĊĠĠĠ Ġprivate Ġvar Ġm View Binding Ġ: ĠT ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġlifecycle . add Observer ( Auto Lifecycle State Observer ( Lifecycle . State . DESTROY ED ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// åľ¨ Lifecycle . State . DESTROY ED Ġå°Ĩ ä¼ļ è§£ ç»ĳ å¹¶ éĶĢ æ¯ ģ binding ï¼Į éĺ² æŃ¢ åĨħåŃĺ æ³ Ħ æ¼ı ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm View Binding ?. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo On Destroy ?. invoke ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . unbind () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm View Binding Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetValue ( this Ref : ĠComponent Activity , Ġproperty : ĠK Property < *> ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm View Binding Ġ?: Ġprepare View Binding Instance ( this Ref ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprepare View Binding Instance ( this Ref : ĠComponent Activity ) Ġ: ĠT { ĊĠĠĠĠĠĠĠ Ġreturn ĠData Binding Util . set ContentView < T >( this Ref , Ġlayout Id ). apply { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm View Binding Ġ= Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Owner Ġ= Ġthis Ref ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }