package Ġme . yo keyword . event bus activity scope Ċ Ċ 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 Ġandroid . util . Log Ċ Ċ import Ġorg . green robot . event bus . EventBus Ċ import Ġjava . util . concurrent . Concurrent HashMap Ċ import Ġjava . util . concurrent . atomic . Atomic Boolean Ċ Ċ /** Ċ Ġ* ĠActivity - scope ĠEvent Bus . Ċ Ġ* ĠCreated Ġby ĠYo Key Ġon Ġ 1 7 / 1 0 / 1 7 . Ċ Ġ*/ Ċ object ĠEvent Bus Activity Scope Ġ{ ĊĠĠĠ Ġprivate Ġval Ġtag Ġ= ĠEvent Bus Activity Scope :: class . java . simple Name ĊĠĠĠ Ġprivate Ġval Ġactivity EventBus Scope Pool Ġ= ĠConcurrent HashMap < Activity , ĠLazy EventBus Instance >() ĊĠĠĠ Ġprivate Ġval Ġinitialized Ġ= ĠAtomic Boolean ( false ) ĊĊĠĠĠ Ġ@ Volatile ĊĠĠĠ Ġprivate Ġvar Ġinvalid EventBus : ĠEvent Bus ? Ġ= Ġnull ĊĊĠĠĠ Ġinternal Ġfun Ġinit ( context : ĠContext ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( initialized . get AndSet ( true )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ( context ?. application Context Ġas ? ĠApplication ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . register Activity Lifecycle Callbacks ( object Ġ: ĠApplication . Activity Lifecycle Callbacks Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġmain Handler Ġ= ĠHandler ( Looper . get Main Looper ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Created ( activity : ĠActivity , Ġbundle : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity EventBus Scope Pool [ activity ] Ġ= ĠLazy EventBus Instance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Started ( activity : ĠActivity ) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Res umed ( activity : ĠActivity ) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Paused ( activity : ĠActivity ) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Stopped ( activity : ĠActivity ) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Save InstanceState ( activity : ĠActivity , Ġbundle : ĠBundle ?) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Destroyed ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! activity EventBus Scope Pool . containsKey ( activity )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMake Ġsure ĠFragment 's Ġon Destroy () Ġhas Ġbeen Ġcalled . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Handler . post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity EventBus Scope Pool . remove ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe Ġactivity - scope ĠEvent Bus Ġinstance ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun ĠgetDefault ( activity : ĠActivity ?): ĠEvent Bus Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( activity Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( tag , Ġ" Can 't Ġfind Ġthe ĠActivity , Ġthe ĠActivity Ġis Ġnull !") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinvalid EventBus () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġlazy EventBus Instance Ġ= Ġactivity EventBus Scope Pool [ activity ] ĊĠĠĠĠĠĠĠ Ġif Ġ( lazy EventBus Instance Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( tag , Ġ" Can 't Ġfind Ġthe ĠActivity , Ġit Ġhas Ġbeen Ġremoved !") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinvalid EventBus () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġlazy EventBus Instance . getInstance () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinvalid EventBus (): ĠEvent Bus Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( invalid EventBus Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( EventBus Activity Scope :: class . java ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( invalid EventBus Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalid EventBus Ġ= ĠEvent Bus () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġinvalid EventBus !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġclass ĠLazy EventBus Instance Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Volatile ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġevent Bus : ĠEvent Bus ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance (): ĠEvent Bus Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( event Bus Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( event Bus Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Bus Ġ= ĠEvent Bus () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġevent Bus !! ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ