java - EventBus,是否可以在onCreate中获取粘性事件?

标签 java android greenrobot-eventbus

我正在使用 EventBus's 将数据从 SplashActivity 发送到主要 Activity postSticky 方法,并根据该数据使用 ViewPagerMainActivity 中创建选项卡。

到目前为止,它运行良好,我可以在 @Subscribe onEvent(Example data) 方法中设置 ViewPager

例如:

@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
public void onEvent(Example event){
    mainContentList = event.mainContentList;

    if (mViewPager != null) {
        setupViewPager(mViewPager, mainContentList);
    }

    TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
    tabLayout.setupWithViewPager(mViewPager);
}

当我们从 ActivityC 调用 MainActivity 时出现问题,

现在 @Subscribe onEvent(Example data) 不会被调用,因为我们只从 SplashActivity 向它发送消息,所以它不会被调用并且 ViewPager 不会更新。

What I want:

我想尽早从 StickyPost 获取数据,以便我可以在 Activity 的 OnCreate 方法中初始化 ViewPager

我知道我可以使用应用程序级别的 Singleton 或创建一个 DataHolder 类等来存储数据,但是无论如何可以使用 EventBus 来实现这一点吗?

感谢您抽出时间,如果您需要更多信息,请告诉我,我会更新。

最佳答案

问题的解决方案非常简单,我们可以简单。我们在任何地方调用 getStickyEvent,就像这样

示例:

EventBus eventbus = Bus.getInstance();

ExampleEvent event = eventbus.getStickyEvent(ExampleEvent.class);

    if ( event != null ){

        // Whatever we want to do with event

        // and then we can remove stickyEvent if we don't need it anymore

        eventbus.removeStickyEvent(event);
    }

关于java - EventBus,是否可以在onCreate中获取粘性事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38698095/

相关文章:

java - 如何通过 gradle 插件强制执行此模式?

java - 从 SQL 数据库中删除条目后出现空指针异常

android - EventBus 是否适合从 RecyclerView 适配器到使用 RecyclerView 的 fragment 的通信

java - 极慢的 Netezza(数据库)批量插入

java - 将 XML 声明添加到 soap 消息

android - 等待,因为没有窗口有焦点,但有一个“焦点应用程序可能最终在完成启动时添加一个窗口

android - 使用 parse.com android 从表中获取数据

java.lang.RuntimeException : It looks like you are using EventBus on Android, 确保将 "eventbus"Android 库添加到您的依赖项

android - 我可以使用 greenrobot EventBus 在 Activity 和 Service 之间进行通信吗?

playframework - 为 Play 使用特定的 Java 路径!框架