第三方库-EventBus
来源:互联网 发布:远程监控软件 编辑:程序博客网 时间:2024/06/14 03:07
前言 : 即使会使普通人昏倒的伤,我也绝对不能倒下!!即使会使普通人死掉的伤,我也不可以死…如果我是普通人,就绝对赢不了“鹰眼”,所以我不可以是普通人!!
1.为什么要使用EventBus?
EventBus是Android下高效的发布/订阅事件总线机制。作用是可以代替传统的Intent,Handler,Broadcast或接口函数在Fragment,Activity,Service,线程之间传递数据,执行方法。特点是代码简洁,是一种发布订阅设计模式(Publish/Subsribe),或称作观察者设计模式。
2.下载地址
库地址:https://github.com/greenrobot/EventBus/releases
源码地址:https://github.com/greenrobot/EventBus
3.怎么使用事件总线EventBus
- 先定义一个类
package com.shao.eventbusdemo;public class FirstEvent { private String msg; public FirstEvent(String msg) { this.msg = msg; } public String getMsg() { return msg; }}
2 在要接收消息的页面注册
//1.注册事件总线 EventBus.getDefault().register(this);
3.在另外的Activity里面,发送消息
btn_second.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //2.发送消息 EventBus.getDefault().post(new FirstEvent("如果无所顾虑,你会怎么做?")); } });
4.接受消息的页面实现(共有四个函数,各功能不同,这是其中之一,可以选择性的实现,这里先实现个)
//3.接受消息 public void onEventMainThread(FirstEvent event) { String msg = "onEventMainThread收到了消息:" + event.getMsg(); tv.setText(msg); Toast.makeText(this, msg, Toast.LENGTH_LONG).show(); }
5.解除注册
@Override protected void onDestroy() { super.onDestroy(); //4.反注册EventBus EventBus.getDefault().unregister(this); }
订阅消息的接受有四个方法
1、onEvent
2、onEventMainThread
3、onEventBackgroundThread
4、onEventAsync
onEvent
如果使用onEvent作为订阅函数,那么该事件在哪个线程发布出来的,onEvent就会在这个线程中运行,也就是说发布事件和接收事件线程在同一个线程。使用这个方法时,在onEvent方法中不能执行耗时操作,如果执行耗时操作容易导致事件分发延迟。
onEventMainThread
如果使用onEventMainThread作为订阅函数,那么不论事件是在哪个线程中发布出来的,onEventMainThread都会在UI线程中执行,接收事件就会在UI线程中运行,这个在Android中是非常有用的,因为在Android中只能在UI线程中跟新UI,所以在onEvnetMainThread方法中是不能执行耗时操作的。
onEventBackgroundThread
如果使用onEventBackgrond作为订阅函数,那么如果事件是在UI线程中发布出来的,那么onEventBackground就会在子线程中运行,如果事件本来就是子线程中发布出来的,那么onEventBackground函数直接在该子线程中执行。
onEventAsync
使用这个函数作为订阅函数,那么无论事件在哪个线程发布,都会创建新的子线程在执行onEventAsync.
EventBus支持 Sticky Event
有时候某个事件可能会用到多次,比如在前面介绍Event Bus模型一文的示例中,最新的位置更新信息,可能需要多次用到,真对这种情况,您可以把该事件发布为Sticky Event,然后,当需要查询该信息的时候,可以通过Bus的getStickyEvent(ClasseventType) 函数来查询最新发布的Event对象。同一类型的事件只保存最新的Event对象。注册和发布事件的函数分别为 registerSticky(…) 和 postSticky(Object event)
源码资源
1 0
- 第三方库-EventBus
- Android 开发之第三方库之 EventBus
- Android第三方框架EventBus使用详解
- PyThon第三方库
- Android 第三方库
- lua第三方库
- android第三方库
- IOS第三方库
- iOS第三方库
- 第三方库汇总
- 第三方库
- 第三方库
- 第三方库
- IOS 第三方库
- 第三方库 EGOCache
- Django 第三方库
- Android第三方库
- 第三方python库
- 动态规划之背包问题(一)
- android 开发中什么是内存泄露什么又是内存溢出?两者的区别是什么?
- 安装.NET Framework 4,一直停留在正在安装 .NET Framework 4 Client Profile
- 映射一对一关联关系
- Ansi,UTF8,Unicode,ASCII编码的区别
- 第三方库-EventBus
- LeetCode:Candy
- vc6.0调试程序出现计算机丢失pcre.dll
- Python for Data Analysis (6)
- Redis的数据类型及命令行操作
- 318. Maximum Product of Word Lengths
- linux下利用mentohust校园拨号上网小记
- 税与纳税
- Java 学习笔记(0x0A) 对象转型