EvenBus初学
来源:互联网 发布:数据库事务 编辑:程序博客网 时间:2024/06/06 02:33
EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。以及将发送者和接收者解耦。
下面结合自己写的一个小例子说说具体的用法:
例子中,有一个FristActivity和SecondActivity,由FristActivity跳转至SecondActivity,点击SecondActivity中的按钮,开始时间分发(其实就是传递一个String的字符串),在FristActivity中接收并显示出来,在我们没有学习这个之前,像这种情况一般使用StartActivityForResult
/OnActivityResulr解决,其实就是intent嘛。那么,用EvenBus实现起来又是哪种效果呢。
首先,Build.gradle中引入EvenBus包:
compile 'org.greenrobot:eventbus:3.0.0'
在我们开始使用evenBus的FristActivity中的Oncreate方法中注册:
EventBus.getDefault().register(this);
防止忘记,在OnDestory方法中注销:
EventBus.getDefault().unregister(this);
接着,定义一个事件类FristEvent:
public classFirstEvent {
private String mMsg;
public FirstEvent(String msg){
mMsg = msg;
}
public String getMsg(){
return mMsg;
}
}
在SecondActivity的触发该事件的位置,为事件赋上所需要传递的值:
EventBus.getDefault().post(newFirstEvent("FirstEvent btn has beclicked"));
回到FristActivity中取出我们传递的值:
@Subscribe(threadMode = ThreadMode.MAIN)
public void first(FirstEvent event){
String mas =event.getMsg();
textView.setText(mas);
Toast.makeText(this,mas,Toast.LENGTH_LONG).show();
}
这算是基本完成了。下面补充一点接收值threadMode得区别:
onEventMainThread:如果使用onEventMainThread作为订阅函数,那么不论事件是在哪个线程中发布出来的,
onEventMainThread都会在UI线程中执行,接收事件就会在UI线程中运行,这个在Android中是非常有用的,
因为在Android中只能在UI线程中跟新UI,所以在onEvnetMainThread方法中是不能执行耗时操作的。
onEventBackground:如果使用onEventBackgrond作为订阅函数,那么如果事件是在UI线程中发布出来的,那onEventBackground就会在
子线程中运行,如果事件本来就是子线程中发布出来的,那么onEventBackground
函数直接在该子线程中执行。
onEventAsync:使用这个函数作为订阅函数,那么无论事件在哪个线程发布,
都会创建新的子线程在执行onEventAsync。
附上demo源码链接:https://github.com/zhong19930928/EvneBus_Demo点击打开链接
- EvenBus初学
- evenbus
- EvenBus
- EvenBus
- android EvenBus
- EvenBus使用方法
- EvenBus的入门
- EvenBus 避免跳进大坑
- Evenbus 3.0 分析
- evenbus的简单使用方法
- 使用RxBus替换EvenBus
- EvenBus简单使用
- EvenBus的使用,(详解)
- Evenbus普通事件,粘性事件
- 初学...
- 初学
- 初学
- 初学
- 欢迎使用CSDN-markdown编辑器
- Android-带你从源码角度理解SharedPreferences存储原理
- Maven配置及使用
- hdu 3411 Snail Alice (等比数列递推)
- shiro(一)
- EvenBus初学
- 阿里云 CDN HTTPS 最佳实践系列——HTTP/2(二)
- 我们也说说Android.mk(1)
- group by 和 order by区别
- 正则趣事?哈哈哈哈
- Chapter 7.Better Living in Objectville
- html基础-表单控件、密码框、单选按钮、复选框、多行文本框、下拉列表、按钮(提交、图片、重置)
- WeChat小程序学习心得——模板使用
- SpringMVC与Web解读(一):SpringMVC环境构建与ContextLoaderListener