EventBus 3.0+ 简单集成使用

  1. dependencies 引入
 compile 'de.greenrobot:eventbus:3.0.0-beta1'

2.注册与取消注册

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        EventBus.getDefault().register(this);

        }
    }

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

    }

3.发起事件

EventBus.getDefault().post(“我是发起的事件”);

注:发起的事件,参数可以自定义 推荐用定义的bean 如

UserBean userInfo = new UserBean();
userInfo.setName("张三");
EventBus.getDefault().post(userInfo);

4.接收事件;

    @Subscribe(threadMode = ThreadMode.MainThread)
    public void helloEventBus(KjjBean x){
        Log.e("wh", "sendEventBus处理消息的线程为" + Thread.currentThread().getName());
        Log.e("wh", "sendEventBus EventBus返回值为" + x.getKjj());

    }

说明:3.0及以后的版本加入了 @Subscribe 注解 threadMode指定了要运行的线程,MainTread就是运行在UI线程,也就是主线程。 PostThread是运行在发起事件的线程。也就是说发起事件在哪个线程,接收事件会在同一个线程来接收。BackgroundThread 就是在非UI线程里接收事件。如果是UI线程发来的消息,就会新起线程来接收事件。如果是子线程发来的消息 就在相同的线程里处理接收消息,也就是说这个线程不可以处理UI事件。async 无论事件在哪个线程发布,该事件处理函数都会在新建的子线程中执行,同样,此事件处理函数中禁止进行UI更新操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值