【Android开发--新手必看篇】依赖框架EventBus的使用

Android笔记

​ ——EventBus
若对该知识点有更多想了解的,欢迎私信博主~~

依赖框架:EventBus
一:优势及作用
  1. 分离事件发送者和接收者
  2. 在Activity、Fragment和后台线程中也可以方便使用
  3. 高度解耦,解决了生命周期的问题
  4. 代码更加简洁
二:EventBus的配置
  1. 分build.gradle中添加(注入依赖)

    dependencies {
    	implementation 'org.greenrobot:eventbus:3.1.1'
    }
    
三:使用
  1. 定义一个用于事件类

    public class UserEvent {
        private User user;
    
        public UserEvent(User user) {
            this.user = user;
        }
    
        public User getUser() {
            return user;
        }
    
        public void setUser(User user) {
            this.user = user;
        }
    }
    
  2. 在接收的地方(此处为Activity)注册EventBus

    //MainActivity
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //绑定控件
        initView();
    	//为该Activity注册EventBus
        EventBus.getDefault().register(this);
    }
    
  3. 定义一个方法用来接收信息

    //MainActivity
    //参数1:四种线程模型
    //参数2:黏性事件,事件处理函数会在Activity UI创建之前,利用黏性事件,可以在创建完UI后再运行一次
    //参数3:优先级,例如有两个OnEvent与threadMode相同的Activity,优先级越高,越早执行,默认为0。
    //因为事件有继续分发性,若是不想让以后的Activity也接收,可以利用优先级
    //EventBus.getDefault().cancelEventDelivery(message);来停止
    @Subscribe(threadMode = ThreadMode.POSTING, sticky = true)
    public void OnEvent(UserEvent userEvent) {
        Log.e("aaa","1.UserEvent");
        tvFirst.setText(userEvent.getUser().getId());
    }
    
    线程模型说明
    POSTING默认,表示事件处理函数的线程与事件发布的线程为同一个
    MAIN表示事件处理函数的线程在主线程(UI)线程中,不能进行耗时操作
    BACKGROUND表示事件处理函数的线程在后台线程中,不能进行UI操作
    如果发布事件在主线程里,那事件处理函数则在后台开新线程
    如果发布事件在后台线程里,则事件处理函数在同一个
    ASYNC表示无论事件发布的线程在哪一个,事件处理函数的线程都会新建一个子线程,不能进行UI
  4. 在需要发布的地方(此处为SecondActivity)发布事件

    //post()--普通发布事件,postSticky()--发布黏性事件接收的信息
    //由此看出,不仅可以发布String、Boolean等普通值,还可以发布对象,所有注册EventBus都可
    //以接收
    EventBus.getDefault().postSticky(new UserEvent(user));
    
  5. 销毁(可以不写)

    @Override
    protected void onDestroy() {
        super.onDestroy();
        EventBus.getDefault().unregister(this);
    }
    
参考文档:
  1. https://www.jianshu.com/p/e7d5c7bda783
  2. https://github.com/greenrobot/EventBus
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值