greenrobot/EventBus

The service cannot receive eventbus events.

libq opened this issue · 1 comments

libq commented

MyService.java

@Override
public void onCreate() {
    super.onCreate();
    EventBus.getDefault().register(this);
}
@Override
public void onDestroy() {
    super.onDestroy();
    EventBus.getDefault().unregister(this);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMyEvent(MyEvent event){
    Log.e(TAG,"onEvent");
}

MyFragment.java

EventBus.getDefault().post(new MyEvent());


manifast.xml

<application
    android:name="com.xxxx"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme"
    android:usesCleartextTraffic="true"
    tools:ignore="GoogleAppIndexingWarning,UnusedAttribute">
  <service android:name=".MyService" />

=======================================================
ps1: MyFragment send the event after MyService started.
ps2: EventBus version : 3.1.1
android minSdkVersion 14
android targetSdkVersion 28

As the service listens on the main thread to the event, the event might get queued on the main thread event queue and not be delivered before the service is destroyed? And in general: does your code make sure the service is between the created and destroyed state?

Anyhow, this programming question is probably something to ask on Stack Overflow.