文章目录  Android Kotlin版封装EventBus     
 
implementation("org.greenrobot:eventbus:3.3.1")
class  MessageEvent< T>  { var  code:  Intvar  data :  T?  =  null constructor ( code:  Int)  { this . code =  code} constructor ( code:  Int,  data :  T)  { this . code =  codethis . data =  data } 
} 
object  MessageEventCode { const  val  REFRESH =  0xB001  const  val  DELETE =  0xB002  const  val  ADD =  0xB003  
} 
@Target ( AnnotationTarget. TYPE,  AnnotationTarget. CLASS) 
@Retention ( AnnotationRetention. RUNTIME) 
annotation  class  BindEventBus
object  EventBusUtils { fun  register ( subscriber:  Any)  { EventBus. getDefault ( ) . register ( subscriber) } fun  unregister ( subscriber:  Any)  { EventBus. getDefault ( ) . unregister ( subscriber) } fun  post ( event:  MessageEvent< * > )  { EventBus. getDefault ( ) . post ( event) } fun  postSticky ( event:  MessageEvent< * > )  { EventBus. getDefault ( ) . postSticky ( event) } fun  isRegister ( clz:  Any) :  Boolean { return  clz. javaClass. isAnnotationPresent ( BindEventBus:: class . java) } 
} 
override  fun  onCreate ( savedInstanceState:  Bundle? )  { super . onCreate ( savedInstanceState) setContentView ( R. layout. activity_event_bus) if  ( EventBusUtils. isRegister ( this ) )  { EventBusUtils. register ( this ) } 
} @Subscribe ( threadMode =  ThreadMode. MAIN) 
fun  onMessageEvent ( event:  MessageEvent< * > )  { when  ( event. code)  { MessageEventCode. REFRESH ->  { tvMessage. text =  "刷新数据" } MessageEventCode. DELETE ->  { tvMessage. text =  "删除数据" } MessageEventCode. ADD ->  { tvMessage. text =  "添加数据: ${ event. data } " } } 
} override  fun  onDestroy ( )  { super . onDestroy ( ) if  ( EventBusUtils. isRegister ( this ) )  { EventBusUtils. unregister ( this ) } 
} 
override  fun  onViewCreated ( view:  View,  savedInstanceState:  Bundle? )  { super . onViewCreated ( view,  savedInstanceState) if  ( EventBusUtils. isRegister ( this ) )  { EventBusUtils. register ( this ) } 
} @Subscribe ( threadMode =  ThreadMode. MAIN) 
fun  onMessageEvent ( event:  MessageEvent< * > )  { when  ( event. code)  { MessageEventCode. REFRESH ->  { tvMessage. text =  "刷新数据" } MessageEventCode. DELETE ->  { tvMessage. text =  "删除数据" } MessageEventCode. ADD ->  { tvMessage. text =  "添加数据: ${ event. data } " } } 
} override  fun  onDestroyView ( )  { super . onDestroyView ( ) if  ( EventBusUtils. isRegister ( this ) )  { EventBusUtils. unregister ( this ) } 
} 
EventBusUtils. post ( MessageEvent< Nothing> ( MessageEventCode. REFRESH) ) 
EventBusUtils. post ( MessageEvent< Nothing> ( MessageEventCode. DELETE) ) 
EventBusUtils. post ( MessageEvent ( MessageEventCode. ADD,  "hello world" ) )