package Ġcom . d hh . rx life 2 Ċ Ċ import Ġandroid . arch . lifecycle . Lifecycle Ċ import Ġandroid . arch . lifecycle . Lifecycle Observer Ċ import Ġandroid . arch . lifecycle . Lifecycle Owner Ċ import Ġandroid . arch . lifecycle . On Lifecycle Event Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . subjects . Behavior Subject Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġd hh Ġon Ġ 2 0 1 9 / 1 / 2 8 . Ċ Ġ* Ċ Ġ* Ġå°Ĩ Ġ[ Lifecycle Owner ] Ġ è½¬æį¢ æĪĲ Ġ[ Lifecycle Provider ] ĠçļĦ æ¡ ¥ æ¢ ģ Ċ Ġ* Ġ@ author Ġd hh Ċ Ġ*/ Ċ internal Ġclass ĠLifecycle Bridge ( private Ġval Ġlifecycle Owner : ĠLifecycle Owner ) Ġ: ĠLifecycle Observer , ĠLifecycle Provider Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcache Map Ġ= ĠWeak HashMap < Lifecycle Owner , ĠLifecycle Bridge >() ĊĠĠĠĠĠĠĠ Ġfun Ġget ( owner : ĠLifecycle Owner ) Ġ= Ġcache Map . get Or Put ( owner ) Ġ{ ĠLifecycle Bridge ( owner ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġlifecycle Subject Ġ= ĠBehavior Subject . create < Lifecycle . Event >(). to Serialized () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġlifecycle Owner . lifecycle . add Observer ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæĺ¯åĲ¦ æĺ¯ éĶĢ æ¯ ģ çĬ¶æĢģ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġis Destroy ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġlifecycle Owner . lifecycle . currentState Ġ== ĠLifecycle . State . DESTROY ED ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠV 4 - support åĮħ ä¸ĭ ï¼Į lifecycle æ¨¡åĿĹ åĽŀè°ĥ ï¼Į support çīĪæľ¬ è¦ģ é«ĺ äºİ Ġ 2 6 . 1 + ĊĠĠĠĠ Ġ* Ġ@ param Ġsource ĠLifecycle Owner ĊĠĠĠĠ Ġ* Ġ@ param Ġevent ĠLifecycle . Event ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ On Lifecycle Event ( Lifecycle . Event . ON _ ANY ) ĊĠĠĠ Ġfun Ġon StateChanged ( source : ĠLifecycle Owner , Ġevent : ĠLifecycle . Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlifecycle Subject . onNext ( event ) ĊĠĠĠĠĠĠĠ Ġif Ġ( is Destroy ) Ġrelease () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æ³¨ éĶĢ çĽ¸åħ³ çĽĳåĲ¬ åĻ¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġrelease () Ġ{ ĊĠĠĠĠĠĠĠ Ġlifecycle Subject . onComplete () ĊĠĠĠĠĠĠĠ Ġcache Map . remove ( lifecycle Owner ) ĊĠĠĠĠĠĠĠ Ġlifecycle Owner . lifecycle . remove Observer ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Lifecycle (): ĠObservable < Lifecycle . Event > Ġ= Ġlifecycle Subject . take Until Ġ{ Ġit Ġ== ĠLifecycle . Event . ON _ DESTROY Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< T > Ġbind To Lifecycle () Ġ= ĠLifecycle Transformer < T >( lifecycle Subject ) ĊĊĠĠĠ Ġoverride Ġfun Ġ< T > Ġbind Until Event ( dispose Event : ĠLifecycle . Event ) Ġ= ĠLifecycle Transformer < T >( lifecycle Subject , Ġdispose Event ) Ċ Ċ }