EventBus的简单使用

上周在花果山的修改用户资料界面请求修改资料然后返回个人主页的时候要改变个人主页的内容,我首先想到的是startActivityForResult方法和onActivityResult方法,而且Leo的辅助类里也有一个方法封装了startActivityForResult方法,但事实上我在其他页面中并没有看到有人调用它,而发现的是event这个目录,里面基本都是一些空类,上网查了才知道是使用了EventBus这个第三方类库。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。以及将发送者和接收者解耦。那么我们就来看看怎么用EventBus吧。

使用EventBus十分简单,一共三步:

一.自定义一个类,可以只有构造方法。(比如下面这个用户资料改变Event)

    public class UserProfileChangedEvent {
        public UserProfileChangedEvent() {
        }
    }

二.在要发送消息的地方调用EventBus的post方法,并将该类的对象作为参数。

    EventBus.getDefault().post(new UserProfileChangedEvent());

三.在要接收消息的地方(以下用Activity作为例子)

1.注册EventBus,在Activity的onCreate方法中注册

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EventBus.getDefault().register(this);
    }
2.实现onEvent方法,在此进行接收到消息之后的操作

    public void onEvent(UserProfileChangedEvent event) {
        updateProfileView();//更新用户资料
    }
参数中要指明是接收哪种消息,EventBus便可分辨,因此我们可以多写几个onEvent方法分别接收不同的消息,比如以下接收另一个CityChangedEvent

    public void onEvent(CityChangedEvent event) {
        updateCityView// 城市改变,数据变化
    }

3.解除注册EventBus,在onDestroy方法中解除

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

EventBus使用就这么简单。发送者和接收者解耦使得代码相当清晰。

刚学了点东西就迫不及待的想用,于是在写翔翔财富的时候,一个明明可以在现成的回调函数中实现的功能我居然也去写了一个Event,被Leo指出后才恍然大悟......所以说不要学了一点东西就沾沾自喜,打代码要踏实,不要滥用知识,要多想想有没有必要,不要去做一些无用功。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
EventBus是一个开源的发布-订阅式的事件总线库。下面是一个简单EventBus使用的代码示例: 1. 首先,需要在项目中引入EventBus库。可以通过Gradle或Maven等构建工具添加依赖。 2. 定义事件。创建一个Java,作为事件的载体,可以包含需要传递的数据。 ```java public class MessageEvent { private String message; public MessageEvent(String message) { this.message = message; } public String getMessage() { return message; } } ``` 3. 注册事件订阅者。在需要接收事件的地方注册订阅者,并指定订阅的事件型。例如,在Activity的onCreate方法中注册: ```java @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EventBus.getDefault().register(this); } ``` 4. 定义事件订阅者的处理方法。在订阅者中定义处理事件的方法,方法需要加上@Subscribe注解,并指定事件型。 ```java @Subscribe public void onMessageEvent(MessageEvent event) { String message = event.getMessage(); // 处理事件 } ``` 5. 发布事件。在需要发送事件的地方,创建一个事件对象,并使用EventBus的post方法发布事件。 ```java EventBus.getDefault().post(new MessageEvent("Hello EventBus!")); ``` 6. 取消事件订阅。在不需要接收事件的地方,取消注册订阅者。例如,在Activity的onDestroy方法中取消注册: ```java @Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); } ``` 以上就是一个简单EventBus使用代码示例。通过事件的发布和订阅,可以实现不同组件之间的解耦,方便数据传递和通信。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值