EventBus 3.0 的使用
来源:互联网 发布:命令行添加密码 mysql 编辑:程序博客网 时间:2024/05/17 08:46
EventBus在github的地址:https://github.com/greenrobot/EventBus
gradle:
compile 'org.greenrobot:eventbus:3.0.0'
一、 发送普通的消息的话 可以这样
注意:EventBus.getDefault().post(new ClassEvent()); 接受消息的activity、fragment等必须先注册了,然后再post消息,然后才能得到消息。
EventBus 在新版中取消了原来的使用方式
publicvoidonEvent(MessageEvent event) { log(event.message); }
publicvoidonEventMainThread(MessageEvent event) { textField.setText(event.message); }
publicvoidonEventBackgroundThread(MessageEvent event){ saveToDisk(event.message); }
变成了:
@Subscribe(threadMode = ThreadMode.MainThread)//在ui线程执行
publicvoidonUserEvent(UserEvent event) { }
@Subscribe(threadMode = ThreadMode.BackgroundThread)//在后台线程执行
publicvoidonUserEvent(UserEvent event) { }
@Subscribe(threadMode = ThreadMode.Async)//强制在后台执行
publicvoidonUserEvent(UserEvent event) { }
@Subscribe(threadMode = ThreadMode.PostThread)//默认方式, 在发送线程执行
publicvoidonUserEvent(UserEvent event) { }
由于官方 文档 还没有更新, 特此记录,
官方文档: https://github.com/greenrobot/EventBus/blob/master/HOWTO.md#delivery-threads-and-threadmodes
EventBus的简单使用:
//在Activity中,注册和反注册
@Override
protectedvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EventBus.getDefault().register(this);//第1步: 注册
}
@Override
protectedvoidonDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);//反注册
}
//在注册了的Activity中,声明处理事件的方法
@Subscribe(threadMode = ThreadMode.BackgroundThread)//第2步:注册一个在后台线程执行的方法,用于接收事件
publicvoidonUserEvent(ClassEvent event) {//参数必须是ClassEvent类型, 否则不会调用此方法
}
//在任意地方,调用发送事件
EventBus.getDefault().post(new ClassEvent());//第3步: 发送事件
//在任意地方,注册事件类
static class ClassEvent{}//定义一个事件, 可以不包含成员变量,和成员方法
二、上边这个是我从网上找的,懒得写了。
我写这篇的重点是,如果post了消息之后,才跳转到新的activity,新的activity才开始注册,这时候怎么办???????? 不要着急,休息一下。
EventBus.getDefault().postSticky()
用这个就可以解决了, 先发送了一个实体,然后跳转到新的activity,activity onCreate() 的时候设置Eventbus的regist()。 然后描述一下方法就行了。
例如:
@Subscribe(threadMode = ThreadMode.MAIN , sticky = true) public void onEventMainThread(String Tag){
}
方法名可以随便写, 但是上边的注解不能只有@Subscribe 即使方法名是onEventMainThread() 在Eventbus3.0上 也是得不到信息的, 必须要指明 sticky = true
- EventBus 3.0 的使用
- EventBus 3.0的使用
- EventBus 3.0 的使用
- EventBus 3.0的使用
- EventBus 3.0的使用
- EventBus 3.0的使用以及要点
- EventBus 《二》 Android EventBus的简单使用
- EventBus的使用初试
- EventBus的使用
- EventBus的使用
- EventBus的简单使用
- EventBus的使用
- eventbus的使用
- EventBus的初步使用:
- EventBus的使用
- EventBus的简单使用
- EventBus的使用总结
- EventBus的使用
- 流程图个人学习总结
- 下一个较大元素
- chrome浏览器使用console代码让115网盘免扫二维码登陆
- 【HDU1231】最大连续子序列(简单动态规划)
- 2016夏季练习——二叉树
- EventBus 3.0 的使用
- Binary XML File异常的解决
- Linux如何查看当前进程的ID
- OkHttpClient
- 合并两个数值按升序的
- 文章标题
- tomcat 中文乱码
- 2016XTU算法专题个人赛1 题解
- AndroidStudio导入项目一直卡在Building gradle project info最快速解决方案