Android开源框架——事件总线 EventBus3.0讲解
2016-06-01 20:57
429 查看
开源项目地址
官网:https://github.com/greenrobot/EventBus介绍
EventBus主要使用了观察者模式设计方案。主要替代Intent、Handler、 BroadCast在Activity、Fragment、Service,多线程中传输数据.官方图
因为是观察者模式,所以具备三要素:
- Event : 事件
- Publisher : 事件发布者
- Subscriber : 事件订阅者,接收发布的事件
Event可以为任意类型的对象,Publisher可以通过post( )方法在任意位置(包括任意线程)将事件发送出去,Subscriber通过四种方法对事件进行处理。
事件处理函数
- ThreadMode.Posting 在发送线程中运行- ThreadMode.Main UI线程中运行
- ThreadMode.Background 在后台线程中运行
- ThreadMode.Async 在后台线程中运行,且为异步
@subscribe(threadMode = ThreadMode.xxx)
public void onUserEvent(UserEvent event){
}
EventBus3.0
Gradle:compile ‘org.greenrobot:eventbus:3.0.0’
Marven:
简单Demo
package com.android.eventbustest; /** * 简单的事件对象 */ public class MessageBean { public String message; public String getMessage(){ return this.message; } public void setMessage(String message){ this.message = message; } }
package com.android.eventbustest; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; public class MainActivity extends Activity implements View.OnClickListener { private TextView textView; private Button btn; private EventBus bus = EventBus.getDefault(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.message); btn = (Button) findViewById(R.id.change); btn.setOnClickListener(this); //注册EventBus bus.register(this); } @Override protected void onDestroy() { //解除注册EventBus bus.unregister(this); super.onDestroy(); } //订阅者事件处理 @Subscribe(threadMode = ThreadMode.POSTING) public void onUserEvent(MessageBean messageBean){ textView.setText(messageBean.getMessage()); } @Override public void onClick(View v) { MessageBean messageBean = new MessageBean(); messageBean.setMessage("success"); //发布者发布事件 bus.post(messageBean); } }
有问题,欢迎大家一起讨论
参考文章:[1]https://github.com/greenrobot/EventBus
[2]http://blog.csdn.net/wl1769127285/article/details/51065015
[3]http://blog.csdn.net/angcyo/article/details/48166849
相关文章推荐
- Android 自定义View (一)
- Android学习笔记-TextView实现跑马灯效果
- Android图片缓存之Lru算法(二)
- Android SQLite数据库添加数据出错 at android.database.sqlite.SQLiteStatement.releaseAndUnlock
- android隐式intent使用场景解析
- Android自由行之走进zxing,轻松实现二维码扫描
- 关于ubuntu14.04下开启wifi给Android使用的方法
- Android 控件绑定事件的几种方法
- Android的两种数据解析
- Android版日语学习应用的逆向分析
- Android中attrs.xml文件的使用详解
- android设计模式之---单例模式
- Android避免反复弹出同一Toast
- android textView的属性
- Android中attrs.xml文件的使用详解
- Realm进阶篇
- Reaml起始篇
- 【开源项目】编程博客Android客户端——CodeBlog
- Android Studio发布项目到Maven仓库
- android Edittext的属性