Android 只要视图不为';还没开始?

Android 只要视图不为';还没开始?,android,event-bus,greenrobot-eventbus,Android,Event Bus,Greenrobot Eventbus,自从我切换到EventBus(任何总线库都会发生同样的情况)之后,我就遇到了这个问题,每当我想在视图未准备好的情况下执行操作时,我就会得到总线未注册的错误 E/EventBus: Could not dispatch event: class com.android.greenfield.Action to subscribing class class com.android.greenfield.GreenStore 当我想在生命周期的这些部分启动操作时,就会发生这种情况: 当我拍摄图片/

自从我切换到EventBus(任何总线库都会发生同样的情况)之后,我就遇到了这个问题,每当我想在视图未准备好的情况下执行操作时,我就会得到总线未注册的错误

E/EventBus: Could not dispatch event: class com.android.greenfield.Action to subscribing class class com.android.greenfield.GreenStore
当我想在生命周期的这些部分启动操作时,就会发生这种情况:

当我拍摄图片/视频时

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {   
   actionsCreator.uploadFile(filepath, "image/jpg");
   // ... (Error here because the bus isn't yet registered)
}
或者在这里当我收到NFC标签时:

@Override
public void onNewIntent(Intent intent) {
   actionsCreator.uploadNfcTag(intent);
   // ... (Error here because the bus isn't yet registered)
}
如果我按照正常方式或他们在文档中所说的EventBus,我应该
register
unregister

@Override
public void onStart() {
    super.onStart();
    EventBus.getDefault().register(this);
}

@Override
public void onStop() {
    EventBus.getDefault().unregister(this);
    super.onStop();
}

到目前为止,我找到的唯一解决方法是在我想要执行介于
onStart()
onStop()生命周期之间的操作时注册和注销。。。但是它很脏,我感觉很糟糕

@Override
public void onNewIntent(Intent intent) {
   dispatcher.register(GreenStore);
   actionsCreator.uplaodNfcTag(intent);
   dispatcher.register(GreenStore);
}

如果您试图在onActivityResult
中显示对话框片段,这与为什么会出现
IllegalStateException
的问题相同。简单地说,它在UI恢复活力之前运行

简单解决方案:

1.)


2.

您可能想查看粘性事件我是必须手动处理这些事件,还是在我注册后自动传递这些事件?在我的情况下,我应该如何处理?你不需要在公交车上注册就可以在公交车上发布消息。您是否使用事件总线在单个活动中路由消息?如果是,为什么?不,我有一个调度器,它链接到总线并将事件发布到另一个classI更新我的问题以更忠实于我的代码…但是我不明白为什么事件总线与视图具有相同的生命周期?当视图还没有准备好时,为什么我不能与其他服务通信?
Handler handler = new Handler(Looper.getMainLooper());
handler.post(new Runnable() {
    @Override
    public void run() {
         actionsCreator.uploadFile(filepath, "image/jpg");
    }
});