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
greenrobot-team commented
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.