Eventbus не работает в фоновом режиме с обслуживанием - PullRequest
0 голосов
/ 23 апреля 2020

У меня была проблема с шиной событий и я пробовал много способов.

Я использую сервис для планирования своего приложения, я буду публиковать события в Eventbus в App.Activity каждый раз.

RefreshService. java

Runnable run = new Runnable() {
    @Override
    public void run() {
        if (instanceNetwork.isOnline(RefreshService.this)) {
            Log.d("LOG_SERVICE_POST", "run: ");
            EventBus.getDefault().postSticky(RUNNING);
        }

        mHandler.postDelayed(this::run, timeRefresh);
    }
};


@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    if (timeRefresh == null) {
        timeRefresh = instanceSharedPreferences.getTimeRefresh(Setting.KEY_AUTO_REFRESH, getString(R.string.TIME_REFRESH_DEFAULT));
    }

    mHandler.postDelayed(run, timeRefresh);
    return super.onStartCommand(intent, flags, startId);
}

Приложение активности

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_app);

    Intent intent = new Intent(this, RefreshService.class);
    startService(intent);
}

@Override
protected void onStart() {
    super.onStart();
    if (!EventBus.getDefault().isRegistered(this)) {
        EventBus.getDefault().register(this);
    }
}

@Override
protected void onDestroy() {
    if(EventBus.getDefault().isRegistered(this)){
        EventBus.getDefault().unregister(this);
    }
    AppDatabase.destroyInstance();
    super.onDestroy();
}

@Subscribe(sticky = true, threadMode = ThreadMode.BACKGROUND)
public void onMessageEvent(Boolean isRun) {
    if (isRun == RefreshService.RUNNING) {
        Log.d("LOG_REFRESHED", "onMessageEvent: ");
        runnableRefresh.run();
    }
}

В настоящее время служба и Eventbus может работать нормально, но когда приложение выключено, будет запущена только служба (подписка не получает событие).

Я хочу, чтобы подписка могла получать мое событие, даже когда приложение выкл.

...