RxBus2 icon indicating copy to clipboard operation
RxBus2 copied to clipboard

Casting - one time problem with queueing

Open MFlisar opened this issue 7 years ago • 0 comments

Following happens:

Case 1 - Correct

  • unlock your screen and start the demo

Following TestEvent logs will be printed:

DemoActivity: Type: QUEUED BUS [ActualClass: TestEvent] (key=NONE), Event: TEST - BASE CLASS and QUEUED - TestEvent
// following 4 events are lost in the second test scenario
DemoActivity: Type: QUEUED BUS [ActualClass: TestSubEvent1] (key=NONE), Event: TEST - BASE CLASS and QUEUED - TestEvent
DemoActivity: Type: QUEUED BUS [ActualClass: TestSubEvent2] (key=NONE), Event: TEST - BASE CLASS and QUEUED - TestEvent
DemoActivity: Type: QUEUED BUS [ActualClass: TestSubEvent3] (key=NONE), Event: TEST - BASE CLASS and QUEUED - TestEvent
DemoActivity: Type: QUEUED BUS [ActualClass: TestSubEvent4] (key=NONE), Event: TEST - SUBCLASS4 and QUEUED - TestSubEvent4
DemoActivity: Type: SIMPLE BUS [ActualClass: TestEvent] (key=NONE), Event: TEST - BASE CLASS and not queued - TestEvent
DemoActivity: Type: SIMPLE BUS [ActualClass: TestSubEvent1] (key=NONE), Event: TEST - BASE CLASS and not queued - TestEvent
DemoActivity: Type: SIMPLE BUS [ActualClass: TestSubEvent2] (key=NONE), Event: TEST - BASE CLASS and not queued - TestEvent
DemoActivity: Type: SIMPLE BUS [ActualClass: TestSubEvent3] (key=NONE), Event: TEST - BASE CLASS and not queued - TestEvent
DemoActivity: Type: QUEUED BUS [ActualClass: TestEvent - from thread] (key=NONE), Event: TEST - BASE CLASS and QUEUED - TestEvent
DemoActivity: Type: QUEUED BUS [ActualClass: TestSubEvent1 - from thread] (key=NONE), Event: TEST - BASE CLASS and QUEUED - TestEvent
DemoActivity: Type: QUEUED BUS [ActualClass: TestSubEvent2 - from thread] (key=NONE), Event: TEST - BASE CLASS and QUEUED - TestEvent
DemoActivity: Type: QUEUED BUS [ActualClass: TestSubEvent3 - from thread] (key=NONE), Event: TEST - BASE CLASS and QUEUED - TestEvent
DemoActivity: Type: SIMPLE BUS [ActualClass: TestEvent - from thread] (key=NONE), Event: TEST - BASE CLASS and not queued - TestEvent
DemoActivity: Type: SIMPLE BUS [ActualClass: TestSubEvent1 - from thread] (key=NONE), Event: TEST - BASE CLASS and not queued - TestEvent
DemoActivity: Type: SIMPLE BUS [ActualClass: TestSubEvent2 - from thread] (key=NONE), Event: TEST - BASE CLASS and not queued - TestEvent
DemoActivity: Type: SIMPLE BUS [ActualClass: TestSubEvent3 - from thread] (key=NONE), Event: TEST - BASE CLASS and not queued - TestEvent
DemoActivity: Type: QUEUED BUS [ActualClass: TestSubEvent4 - from thread] (key=NONE), Event: TEST - SUBCLASS4 and QUEUED - TestSubEvent4

Case 2 - Incorrect

  • lock your screen and start the app with the android studio start button
  • wait 5 seconds, so that the TestEvents from the background are emitted as well
  • unlock the screen to resume the demo app

Following is printed:

DemoActivity: Type: SIMPLE BUS [ActualClass: TestEvent] (key=NONE), Event: TEST - BASE CLASS and not queued - TestEvent
DemoActivity: Type: SIMPLE BUS [ActualClass: TestSubEvent1] (key=NONE), Event: TEST - BASE CLASS and not queued - TestEvent
DemoActivity: Type: SIMPLE BUS [ActualClass: TestSubEvent2] (key=NONE), Event: TEST - BASE CLASS and not queued - TestEvent
DemoActivity: Type: SIMPLE BUS [ActualClass: TestSubEvent3] (key=NONE), Event: TEST - BASE CLASS and not queued - TestEvent
DemoActivity: Type: SIMPLE BUS [ActualClass: TestEvent] (key=NONE), Event: TEST - BASE CLASS and not queued - TestEvent
DemoActivity: Type: SIMPLE BUS [ActualClass: TestEvent - from thread] (key=NONE), Event: TEST - BASE CLASS and not queued - TestEvent
DemoActivity: Type: SIMPLE BUS [ActualClass: TestSubEvent1 - from thread] (key=NONE), Event: TEST - BASE CLASS and not queued - TestEvent
DemoActivity: Type: SIMPLE BUS [ActualClass: TestSubEvent2 - from thread] (key=NONE), Event: TEST - BASE CLASS and not queued - TestEvent
DemoActivity: Type: SIMPLE BUS [ActualClass: TestSubEvent3 - from thread] (key=NONE), Event: TEST - BASE CLASS and not queued - TestEvent
DemoActivity: Type: QUEUED BUS [ActualClass: TestEvent] (key=NONE), Event: TEST - BASE CLASS and QUEUED - TestEvent
DemoActivity: Type: QUEUED BUS [ActualClass: TestEvent - from thread] (key=NONE), Event: TEST - BASE CLASS and QUEUED - TestEvent
DemoActivity: Type: QUEUED BUS [ActualClass: TestSubEvent1 - from thread] (key=NONE), Event: TEST - BASE CLASS and QUEUED - TestEvent
DemoActivity: Type: QUEUED BUS [ActualClass: TestSubEvent2 - from thread] (key=NONE), Event: TEST - BASE CLASS and QUEUED - TestEvent
DemoActivity: Type: QUEUED BUS [ActualClass: TestSubEvent3 - from thread] (key=NONE), Event: TEST - BASE CLASS and QUEUED - TestEvent
DemoActivity: Type: QUEUED BUS [ActualClass: TestSubEvent4] (key=NONE), Event: TEST - SUBCLASS4 and QUEUED - TestSubEvent4
DemoActivity: Type: QUEUED BUS [ActualClass: TestSubEvent4 - from thread] (key=NONE), Event: TEST - SUBCLASS4 and QUEUED - TestSubEvent4

Problem

Prerequisitions

  • emit casted sub events
  • emit it before activity is resumed
  • queuing must be enabled

All casted events that were emitted BEFORE the activity was resumed for the first the time AND are casted got lost (in the example those are the 4 sub class events that are emitted in the activity on start). This ONLY happens if queuing is enabled. If they are not casted they are not lost, weird, because casting means, that the casted events are emitted, so for the bus, it should not make any difference if a sub class of TestEvent in a casted way or a TestEvent is send to the bus...

I currently don't see any reason why this is happening...

MFlisar avatar Mar 07 '17 07:03 MFlisar