EventBus
EventBus copied to clipboard
Register in onCreate() can not refresh ui
I will refresh ui when I received this event that send before entering this activity
@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
fun eventLock(operateEvent: OperateEvent) {
LogUtil.e(TAG, "Locked")
layoutOnOff.setBackgroundResource(R.drawable.ic_oval_state_locked)
tvLockState.setText (R.string.Lock_State_Locked)
}
if I register in onCreate() , unregister in onDestroy ,when i repeated entry and exit,The UI has not changed,But the log shows that the execution is here LogUtil.e(TAG, "Locked")
(It happened after the second entry)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
EventBus.getDefault().register(this)
}
override fun onDestroy() {
super.onDestroy()
EventBus.getDefault().unregister(this)
}
if I register in onResume() , unregister in onPause,It is no problem
override fun onResume() {
super.onResume()
EventBus.getDefault().register(this)
}
override fun onPause() {
super.onPause()
EventBus.getDefault().unregister(this)
}
Eventbus version is 3.2.0 Look forward to your reply
This is likely due to using threadMode = ThreadMode.MAIN
. Either drop that, or alternatively synchronously check for the sticky event, like EventBus.getDefault().getStickyEvent(OperateEvent::class.java)
.
https://greenrobot.org/eventbus/documentation/configuration/sticky-events/