EventBus 传值问题

EventBus3.0,Fragment 跳转到外部activity后,从外部activity传值到fragment,无法接收的问题

首先分析一下问题的所在;

	通过debug fragment生命周期,我们发现如果我们把 EventBus的注册和注销写在onResume 和onPause中时,那么从外部activity传值过来时,就不会执行EventBus接收方法,因为我们已经注销了;

解决这个问题的办法 有两个

  1. 把EventBus的注册和销毁 写在onGreate()和onDestroy 中 ,正常的方式使用,前提时 保证EventBus 没有被销毁;
  2. 如果EventBus 在跳转界面时,销毁,那么只能使用 EventBus粘性事件 , sticky = true这个属性,再发送事件的外部activity 中用 EventBus.getDefault().postSticky();就可以接收到值了
 /**
     * 事件订阅者自定义的接收方法
     *
     * @param event
     */
    @Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
    public void onMessageEvent(EventBusModel event) {
        if (event == null) {
            return;
        }
        。。。。。
     }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
EventBus 是一种常用的事件发布/订阅机制,用于在不同组件之间递数据。它可以帮助组件之间解耦,简化通信。 在使用 EventBus 进行数据递时,通常需要遵循以下步骤: 1. 首先,定义事件类:创建一个用于递数据的事件类,该类包含所需的数据字段和方法。 2. 注册订阅者:在接收数据的组件中注册为订阅者。这样,当有事件发布时,该组件就能接收到相应的数据。 3. 发布事件:在需要递数据的地方,创建并发布事件对象。事件对象包含要递的数据。 4. 订阅事件:在订阅者中定义一个方法,用于处理接收到的事件。该方法会在事件发布时被调用,并可以获取到事件中的数据。 下面是一个简单的示例代码,演示了如何使用 EventBus 进行数据递: ```java // 定义事件类 class MessageEvent { private String message; public MessageEvent(String message) { this.message = message; } public String getMessage() { return message; } } // 订阅者 class Subscriber { @Subscribe public void onMessageEvent(MessageEvent event) { System.out.println("接收到消息:" + event.getMessage()); } } // 发布者 class Publisher { public void sendMessage(String message) { // 创建事件对象并发布 EventBus.getDefault().post(new MessageEvent(message)); } } // 在需要的地方注册订阅者 EventBus.getDefault().register(new Subscriber()); // 在需要的地方使用发布者发布事件 Publisher publisher = new Publisher(); publisher.sendMessage("Hello, EventBus!"); ``` 以上是一个简单的示例,展示了如何使用 EventBus 进行数据递。根据实际需求,你可以根据自己的情况来定义事件类、订阅者和发布者,并进行相应的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值