EventBus 3.0的使用
来源:互联网 发布:简述波士顿矩阵分析法 编辑:程序博客网 时间:2024/06/01 16:01
示例代码
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //为了看着方便我们将发送事件的方法与注册写在了一起,我们可以在任意位置发送事件 //发送黏性事件 EventBus.getDefault().postSticky(new Event()); //注册EventBus EventBus.getDefault().register(this); //发送一个事件 EventBus.getDefault().post(new Event()); } /** * 普通的事件监听方法 */ @Subscribe public void onEvent(Event event) { Log.d("onEvent", event.event); } /** * 指定事件监听方法执行的线程 */ @Subscribe(threadMode = ThreadMode.MAIN) public void onEventThreadMode(Event event) { Log.d("onEventThreadMode", event.event); } /** * 接收黏性事件(也可以接受非黏性事件,事件与方法中的参数相同即可) */ @Subscribe(sticky = true) public void onEventSticky(Event event) { Log.d("onEventSticky", event.event); } /** * 指定优先级 */ @Subscribe(priority = 80) public void onEventPriority(Event event) { Log.d("onEventPriority", event.event); } @Override protected void onDestroy() { super.onDestroy(); //移除EventBus EventBus.getDefault().unregister(this); } /** * 要发送的事件,自己定义 */ public class Event { public String event = "接收事件"; }}
添加依赖
在项目的build.gradle文件中添加如下依赖:
compile ‘org.greenrobot:eventbus:3.0.0’
发送数据
EventBus.getDefault().post( event);
可以发送的数据包括基本数据类型,可以是字符串,也可以是对象。
取消事件的分发
EventBus.getDefault().cancelEventDelivery(event);//取消指定非黏性事件EventBus.getDefault().removeAllStickyEvents();//取消全部的黏性事件EventBus.getDefault().removeStickyEvent(Event.class);//取消指定的黏性事件
接收消息
1.注册eventbus(在各组件的创建的时候注册,如Activity的onCreat方法) EventBus.getDefault().register(this);2.取消注册(在各组件销毁的时候移除避免内存泄漏,如Activity的onDestroy方法) EventBus.getDefault().unregister(this);3.实现监听方法 通过方法中的参数区分接收方法
@Subscribe public void onEvent(String string){ Log.d("EventBus", string +" 默认 " + Thread.currentThread().getName()); }
指定接收方法的线程
默认执行在发送消息的线程指定线程的方法 @Subscribe(threadMode = ThreadMode.**) ThreadMode是一个枚举类型。它的值如下: POSTING: Subscriber在发布消息(调用post函数的线程,默认的线程)的线程中执行。 MAIN: Subscriber将在Android主线程中执行。 BACKGROUND: Subscriber在后台线程中执行 ASYNC: Subscriber在异步线程,也就是在独立的线程中执行。
指定接收方法的优先级
优先级的值为0~100 ,默认优先级为0。通过@Subscribe(priority = 80)指定优先级。只有在同一个线程中的监听方法才有优先级的比较。
黏性事件
黏性事件就是能接收订阅前发送的事件,但是只能接收最新一次的粘性事件。发送黏性事件EventBus.getDefault().postSticky(event)通过设置@Subscribe(sticky = true)来接收黏性事件。默认不接收粘性事件的。接受黏性事件的方法也可以接受非黏性事件。
EventBus源码:github
阅读全文
0 0
- 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的使用
- Git-----Git中版本回退
- 自定义permission简单总结
- docker连接spring boot和mysql容器
- spring/spring boot/spring mvc中用到的注解
- T9-智能拼音
- EventBus 3.0的使用
- linux cpu数物理核逻辑核的查看方法及线程进程的绑定方法
- Maven入门
- C/C++程序的编译链接过程
- Caffe图像分类之测试
- iOS--GCD(使用dispatch_group来进行线程同步)
- andriid基础用户登录验证,弹窗,设置标题(详解)
- C++中容器总结
- 对比代码托管平台