package Ġcom . zone . lib . base . controller Ċ Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġandroid . os . Message Ċ import Ġrx . Observable Ċ import Ġrx . subscriptions . Composite Subscription Ċ import Ġjava . lang . ref . Weak Reference Ċ Ċ interface ĠBase Feature View Ċ open Ġclass ĠView Controller < V Ġ: ĠBase Feature View >( v : ĠV ) Ġ: ĠHandler . Callback Ġ{ ĊĠĠĠ Ġprotected Ġvar Ġview : ĠWeak Reference < V > Ġ= ĠWeak Reference ( v ) ĊĊĠĠĠ Ġprivate Ġval Ġsubscriptions Ġ= ĠComposite Subscription () ĊĠĠĠ Ġ// ä¸ºä»Ģä¹Ī è¦ģ åįķ ä¸ª å¼ Ħ ä¸ª Handler Ġ èĢĮ ä¸į çĶ¨ Handler U Ë Ļ i Util éĤ£ ç§į åħ¨å±Ģ çļĦ åĳ¢ ? ĊĠĠĠ Ġ// ä¸ºäºĨ ä½¿çĶ¨ removeAll Message Ġ ĠæĬ Ĭ å»¶ æĹ¶çļĦ éĥ½ æ¸ħ éĻ¤ æİī , èĢĮ åħ¨å±Ģ ä¼ļ çļĦ ä¼ļ åĲ§ åĪ« çļĦ è¯·æ±Ĥ ç§»éĻ¤ æİī ĊĠĠĠ Ġprivate Ġvar Ġhandler : ĠHandler ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Looper . get Main Looper () Ġ!= ĠL ooper . my Looper ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" è¯· åľ¨ ä¸» çº¿ç¨ĭ åĪĽå»º !") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġhandler Ġ= ĠHandler ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget View (): ĠV ? Ġ= Ġview . get () ĊĊĠĠĠ Ġ// éĢļè¿ĩ subscriptions Ġ æĶ¶éĽĨ Ġ ĠSubscriber , çĦ¶åĲİ åľ¨ çĶŁåĳ½ åĳ¨æľŁ ç»ĵæĿŁ çļĦæĹ¶åĢĻ Ġ åħ¨éĥ¨ è§£ éĻ¤ è®¢ éĺħ Ġ å¹¶ clear æİī ĊĠĠĠ Ġfun Ġ< T > Ġio Io Transformer (): ĠObservable . Transformer < T , ĠT > Ġ= ĠRx Comp o ses . io Transformer ( subscriptions ) ĊĊĠĠĠ Ġ// éĢļè¿ĩ subscriptions Ġ æĶ¶éĽĨ Ġ ĠSubscriber , çĦ¶åĲİ åľ¨ çĶŁåĳ½ åĳ¨æľŁ ç»ĵæĿŁ çļĦæĹ¶åĢĻ Ġ åħ¨éĥ¨ è§£ éĻ¤ è®¢ éĺħ Ġ å¹¶ clear æİī ĊĠĠĠ Ġfun Ġ< T > Ġio Iu Transformer (): ĠObservable . Transformer < T , ĠT > Ġ= ĠRx Comp o ses . asy c Transformer ( subscriptions ) ĊĊĠĠĠ Ġfun Ġpost ( callback : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( view . get () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdo Safe ( callback : Ġ( v : ĠV ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġget Ġ= Ġview . get () ĊĠĠĠĠĠĠĠ Ġif Ġ( get Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ( get ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpost Delayed ( callback : Ġ() Ġ-> ĠUnit , Ġdelay Millis : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( view . get () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġdelay Millis ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// remove åħ¨éĥ¨ ä»»åĬ¡ ï¼ģ ĊĠĠĠ Ġfun Ġremove All Message () Ġ{ ĊĠĠĠĠĠĠĠ Ġsubscriptions . clear () ĊĠĠĠĠĠĠĠ Ġhandler . remove Callbacks And Messages ( null ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhandle Message ( msg : ĠMessage ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} Ċ Ċ } Ċ