4

我在 Android 中使用绿色机器人事件总线

我正在使用 EventBus.getDefault().post 和 onStop 调用所有事件 我正在调用 EventBus.getDefault().unregister(this); 在我的活动中。但是,一旦我按下并重新打开应用程序,在单个事件发布中,就会收到多个 onEvent()。有没有其他人遇到过这个问题?

@Override
protected void onStart() {
    super.onStart();
    getBus().register(this);
}

@Override
protected void onPause() {
    getBus().unregister(this);
    super.onPause();
}

@Override
protected void onStop() {
    getBus().unregister(this);
    super.onStop();
}


protected EventBus getBus() {
    return EventBus.getDefault();
}
4

1 回答 1

6

我解决了这个问题。每次应用从后台返回时,都会再次调用注册函数。与我的错误假设相反,绿色机器人不管理重复项,我需要在注册之前添加检查。所以这就是我的最终代码的样子。

mBus = EventBus.getDefault();

void registerAndCheck(Object helper)
{
    if(!mBus.isRegistered(helper))
    {
        mBus.register(helper);
    }
}


mFileHelper = new FilesHelper();
registerAndCheck(mFileHelper);

希望它可以帮助某人。

于 2015-09-18T05:21:14.303 回答