eventbus的使用
来源:互联网 发布:mysql开启事务语句 编辑:程序博客网 时间:2024/05/17 04:14
eventbus包
包结构:
目前Android平台比较优秀的事件总线操作框架。
也许很多人会想问这个有什么用?这个其实类似于广播,一处发送,多处注册收发内容。
当Android项目越来越庞大的时候,应用的各个部件之间的通信变得越来越复杂,例如:当某一条件发生时,应用中有几个部件对这个消息感兴趣,那么我们通常采用的就是观察者模式,使用观察者模式有一个弊病就是部件之间的耦合度太高,在这里我将会详细介绍Android中的解耦事件总线EventBus的使用。
(关于EventBus的基本操作可看Demo中的EventBusActivity,其他用法请参看Demo中com.tandong.sademo.eventbus里的其他演示用法类)
EventBus和Otto效率对比的演示请看Demo中com.tandong.sademo.eventbuspkotto中的相关类
< 用法>//一处发送,多处接收//自定义一个事件(不需要继承任何类),通常我比较喜欢定义一个Message类//定义回调函数,相当于观察者模式中的on***Listener函数,在EventBus中可以定义四种类型的回调函数://onEvent 它和ThreadModel中的PostThread对应,这个也是默认的类型,当使用这种类型时,回调函数和发起事件的函数会在同一个线程中执行//onEventMainThread,当使用这种类型时,回调函数会在主线程中执行,这个在Android中非常有用,因为在Android中禁止在子线程中修改UI//onEventBackgroundThread,当使用这种类型时,如果事件发起函数在主线程中执行,那么回调函数另启动一个子线程,如果事件发起函数在子线程执行,那么回调函数就在这个子线程执行。//onEventBusAsync,当使用这种类型时,不管事件发起函数在哪里执行,都会另起一个线程去执行回调。public class EventBusActivity extends SmartActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);// 类似于广播,在需要接收内容的地方注册EventBus(有多种注册方式,这里只展示其中几种)// 注册:三个参数分别是,消息订阅者(接收者),接收方法名,事件类EventBus.getDefault().register(this);//EventBus.getDefault().register(this, "setTextA", SetTextAEvent.class);//EventBus.getDefault().register(this, "setTextB", SetTextBEvent.class);//EventBus.getDefault().register(this,"messageFromSecondActivity",SecondActivityEvent.class);//EventBus.getDefault().registerSticky(this, "messageFromSecondActivity", SecondActivityEvent.class);//EventBus.getDefault().register(this, "countDown", CountDownEvent.class);}public void postEvent(View view) {// 分发(在你需要发送内容消息的地方使用调用即可)EventBus.getDefault().post("SmartAndroid");// EventBus.getDefault().post(new MyEvent());}@Overrideprotected void onDestroy() {super.onDestroy();EventBus.getDefault().unregister(this);}// 以下展示其中4种接收处理事件内容的方法,方法名称固定public void onEventMainThread(String json) {// 接收事件内容地方(参数类型可以自己根据实际情况定义)}public void onEvent(Object obj) {// 默认接收事件内容地方(参数类型可以自己根据实际情况定义)}public void onEventAsync(Object event) {// 接收事件内容地方(参数类型可以自己根据实际情况定义)}public void onEventBackgroundThread(Object event) {// 接收事件内容地方(参数类型可以自己根据实际情况定义)}}
0 0
- EventBus 《二》 Android EventBus的简单使用
- EventBus的使用初试
- EventBus的使用
- EventBus的使用
- EventBus的简单使用
- EventBus的使用
- eventbus的使用
- EventBus的初步使用:
- EventBus的使用
- EventBus的简单使用
- EventBus的使用总结
- EventBus的使用
- EventBus框架的使用
- EventBus的简单使用
- Eventbus的基本使用
- EventBus的使用
- EventBus的使用
- EventBus的简单使用
- EHCache分布式缓存集群环境配置
- JS窗口刷新
- 面试题整理
- java异常在实际开发中的应
- "Mac OS X"想要进行更改。键入管理员的名称和密码以允许执行此操作("Mac OS X"想使用系统钥匙串)
- eventbus的使用
- 自定义终端提示符内容和颜色
- Python 目录操作
- Html.BeginForm与Ajax.BeginForm
- 解包酷派CPB包任意机型
- C++ 文件操作结构体SHFILEOPSTRUCT
- CentOS yum中科大源
- ListView和BaseAdapter的getViewTypeCount和getItemViewType方法实现Gridview,显示多列
- Codeforces Round #281 (Div. 2) C. Vasya and Basketball 枚举+二分