greenrobot / EventBus

Event bus for Android and Java that simplifies communication between Activities, Fragments, Threads, Services, etc. Less code, better quality.
http://greenrobot.org/eventbus/
Apache License 2.0
24.66k stars 4.66k forks source link

No subscribers registered for event class org.greenrobot.eventbus.NoSubscriberEvent #415

Closed jamin918 closed 7 years ago

jamin918 commented 7 years ago

ACT_HandleEvent.class:

    @Override
    protected void onStart() {
        super.onStart();
        EventBus.getDefault().register(this);
    }
    @Override
    protected void onResume() {
        super.onResume();
        boolean hasSubscriber = EventBus.getDefault().hasSubscriberForEvent(TransferEvent.class);
        Log.d(TAG, "hasSubscriber: "+hasSubscriber);
    }
    @Override
    protected void onStop() {
        super.onStop();
        EventBus.getDefault().unregister(this);
    }

  @Subscribe(threadMode = ThreadMode.BACKGROUND)
  public void getTransferResult(TransferEvent event){
        Log.d(TAG, "onTransferSuccess:  result="+event.transfer);
        if (event.transfer)
            finish();
    }

ACT_Transfer.class:

private void onTransfer() {
        final ProgressDialog dialog = DialogHelper.getWaitDialog(this, "...");
        dialog.show();
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                dialog.dismiss();
                ToastUtils.showShortToast(mContext, "success");
                TransferEvent event = new TransferEvent(true);
                EventBus.getDefault().post(event);
                ActivityCompat.finishAfterTransition(ACT_Transfer.this);
            }
        }, 1500);

    }

Operation order is from ACT_HandleEvent to ACT_Transfer. I tried post the event in mainThread and subscribe in mainThread. but i get the same result.

Logcat:

D/EventBus: No subscribers registered for event class com.epuxun.sxpa.server.entity.TransferEvent
D/EventBus: No subscribers registered for event class org.greenrobot.eventbus.NoSubscriberEvent
D/ACT_HandleEvent: hasSubscriber: true
greenrobot-team commented 7 years ago

Make sure that your event is posted when your ACT_HandleEvent activity is started (after onStart() and before onStop()).

If your event is posted earlier or later you might try to register in another lifecycle method (onCreate() and onDestroy()) or use sticky events. -ut

greenrobot-team commented 7 years ago

No response. Closing. -ut