EventsBus

本文详细介绍了EventBus 3.0的使用方法,包括注册与取消注册流程,Event类定义,以及如何在不同线程模式下处理事件。特别强调了3.0版本的新特性,如方法命名规则变化,线程模式配置与优先级设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


 
91. EventsBus:

 3.0之前:
 http://blog.youkuaiyun.com/harvic880925/article/details/40660137
-------------------------------
 如何使用:
 //1.注册 (A)
        EventBus.getDefault().register(this);

  2. //取消注册 (A)
        EventBus.getDefault().unregister(this);

  3.  定义Event类,通过属性来传递数据
  4.   定义发布处理类 (A)
  @Subscribe(threadMode = ThreadMode.MAIN)
    public void playMusict(ThreeEvent threeEvent){
        Person p= threeEvent.getPerson();

       // Toast.makeText(this,p.getAge(),Toast.LENGTH_LONG).show();


        Log.e("denganzhi1",threeEvent.getPerson().getName());
    }
 (B)
  5.      EventBus.getDefault().post(
                new FirstEvent("FirstEvent btn clicked"));


----------------------------
 EventBus3.0使用:
 
  
最新版本3.0和前面不兼容 
 EventsBus使用的5个步骤  
 EventsBus3.0以后新特性:

1. 方法名,不需要onEvent开头

2. 
方法的线程模式 ThreadMode 可以配置,这两个方法通用一个参数,
可以配置优先级proritity,值越大,优先收到

@Subscribe(threadMode = ThreadMode.MAIN,sticky = false,priority = 80)
@Subscribe(threadMode = ThreadMode.BACKGROUND)
@Subscribe(threadMode = ThreadMode.ASYNC)
@Subscribe(threadMode = ThreadMode.POSTING)

POSTING:在发送线程上处理接收事件,以保证最小开销。使用过程中应避免在主线程发送事件以造成线程阻塞。


*MAIN:在Android主线程(UI线程)处理接收事件。由于在主线程处理事件,所以在使用过程中应避免执行耗时操作以造成线程阻塞。


BACKGROUND:后台线程上处理接收事件,若在非主线程发送事件,则直接在当前线程处理接收。
*ASYNC:单独线程上处理接收事件,与后台线程及主线程独立。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值