Android:EventBus的使用 从此消息传递变得简单
来源:互联网 发布:淘宝可以延长收货几天 编辑:程序博客网 时间:2024/05/17 02:16
一、首先要说的自然是我准备了好几秒钟的开场白:
最近看别人的Demo看到一个有趣的框架EventBus,挺有趣,也挺好用。看名称个人理解成事件总线,这个总线负责接收发布者的信息转发给订阅者。
不太会画图,暂且看看我用文字粗略表示的“图”:
订阅者<——EventBus<——发布者
也就是说发布者在某处发布了一些信息,已经订阅了该信息的订阅者即可收到该信息。
EventBus主要用于代替Intent,Handler,Broadcastreceiver在Activity,Service等之间传递消息。使得代码更加优雅,如果利用得好还能很大程度上解耦。
二、下载安装
源码:https://github.com/greenrobot/EventBus
使用android studio可以直接在gradle写上:
compile 'org.greenrobot:eventbus:3.0.0'
三、基本使用
1.自定义一个类,类似java bean
public class MyMessage{private String msg;
//get,set...}2.发送消息,假设要向某个地方发送一条消息“hello”
(1)获取EventBus的对象
(2) 准备好要发送的消息
EventBus eventBus= EventBus.getDefault();
(2) 准备好要发送的消息
MyMessage mMsg=new MyMessage();mMsg.setMsg("hello");eventBus.post(mMsg);
(3)接收消息
3.在要接收消息的地方注册EventBus,同样是使用EventBus对象注册:
eventBus. register(Context context);
注册完成之后在要接收消息的页面写接收方法:
public void onEventMainThread(MyMessage event) { String msg = "onEventMainThread收到了消息:" + event.getMsg(); Log.d("message", msg); tv.setText(msg); Toast.makeText(this, msg, Toast.LENGTH_LONG).show(); }
无论发送线程是否主线程,在该方法执行的时候都是主线程在执行,因此可以放心在该方法执行更新ui操作。但是要注意不能再改方法中进行耗时操作。
四、进阶使用
上面提到在onEventMainThread方法所执行的逻辑都是在主线程中执行的,那么假如我要在子线程中执行又要怎么写呢?
在EventBus中有四个订阅函数:1)onEvent 2)onEventMainThread 3)onEventBackground 4)onEventAsync
onEventBackground:如果消息时间在主线程发布出来的话,那么onEventBackground就会新起一条子线程中运行,如果消息在子线程中发出来的话那么,onEventBackground就会直接在子线程中运行
onEventAsync:与onEventBackground的作用差不多,区别在于无论消息在主线程还是子线程发送,都会新起一条线成执行。
onEvent:如果发送消息所在的线程在主线程那么该方法就会在主线程执行,如果发送消息在子线程那么该方法也会在该子线程执行。
1 0
- Android:EventBus的使用 从此消息传递变得简单
- EventBus的简单使用,消息传递
- 【android】消息传递利器EventBus的使用
- 传递消息--第三方开源--EventBus的简单使用
- Android消息传递之EventBus 3.0使用
- Android EventBus 传递消息
- Android EventBus 传递消息
- EventBus 《二》 Android EventBus的简单使用
- 在Eclipse或者ADT中使用ButterKnifeZelezny,Android组件初始化从此变得简单易懂!!!!
- 在Eclipse或者ADT中使用ButterKnifeZelezny,Android组件初始化从此变得简单易懂!!!!
- 在Eclipse或者ADT中使用ButterKnifeZelezny,Android组件初始化从此变得简单易懂!!!!
- 在Eclipse或者ADT中使用ButterKnifeZelezny,Android组件初始化从此变得简单易懂!!!!,androideclipseadt
- Android消息传递利器EventBus
- 26.使用EventBus传递消息
- Android EventBus的简单使用
- Android EventBus的简单使用
- android EventBus的简单使用
- Android EventBus 的简单使用
- 如何实现背景透明,文字不透明,兼容所有浏览器?
- Json转换利器Gson
- PHP中static的用法
- 96.Examine the structure of the INVOICE table.
- Test
- Android:EventBus的使用 从此消息传递变得简单
- Android学习笔记----使用Intent传递对象
- Xcode真机调试出现“Could not find Developer Disk Image”
- 度量快速开发平台中使用.NET,API函数
- LeetCode OJ ---- Longest Palindromic Substring
- 自然语言处理基本知识小结
- Spring事务
- jquery学习笔记一
- JAVA-反射-GETGENERICSUPERCLASS()介绍