呃,要跟上时代的步伐,所以来学习一下EventBus(话说好像现在学也已经算是跟不上了。。嘛。。不管了,一步一步往前追,应该还来得及吧)。

转载请注明出处:http://blog.csdn.net/wingichoy/article/details/50625105

看了网上一些的关于eventBus的文章,上来就叽里呱啦一大堆总结啊,概述啊。。上个原理图啊什么的。。 这样写虽然好,但是总会给一些初学者打一些退堂鼓。看到那么复杂就不想看下去了。。 所以在自己学习的过程中,想写一些直观的,精简的,适合初学者的博客。

现在开始吧

关于EventBus是什么

额。。因为笔者也是刚刚接触,所以暂时我们认为他是用来传递消息的东东(类似于handler啊 intent啊等等)。这样也比较好理解。 暂时撇开观察者模式不说,直接来看他的用法。

首先将EventBus整合到我们自己的项目中

1.在gradle里面,加入如下代码,这样即可在项目中使用EventBus


dependencies {
compile 'de.greenrobot:eventbus:2.4.0'
}

如何使用

  1. 在MainActivity的onCreate()周期注册EventBus。
EventBus.getDefault().register(this);
  1. 在onDestroy()注销EventBus。
  @Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}

这样便完成了一个EventBus的注册。现在,给Activity安上一个按钮,用这个按钮来发送消息,弹出一个Toast。

  @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButton = (Button) findViewById(R.id.btn);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EventBus.getDefault().post("hello eventBus");
}
});
EventBus.getDefault().register(this);
}

此时,点击button,将会通过EventBus发送一条消息。然后来写一个onEventMainThread函数,去处理这个消息的接收。这个函数代表如果接收到消息,则运行在UI线程。里面去弹出一条Toast,为刚才发送的消息。

public void onEventMainThread(String str) {
Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show();
}

此时,点击按钮,效果如下:

具体的流程是: 按钮触发监听事件—->EventBus发送消息—->EventBus接收消息—->处理接收到的消息

这样应该大家可以很直观的了解了EventBus的作用,这也算是第一课时的笔记吧~

下一篇: EventBus的常用函数

大家如果喜欢我的博客,记得关注我哦。

最新文章

  1. Windows下Nginx配置SSL实现Https访问(包含证书生成)
  2. MySQL 数据库事务与复制
  3. Myeclipse启动报错: Invalid 'log4jConfigLocation' parameter
  4. Error Domain=ASIHTTPRequestErrorDomain Code=8 "Failed to move file from"xxx/xxx"to"xxx/xxx"
  5. Python札记 -- 使用easy_install进行模块/包管理
  6. Maven的依赖范围
  7. 矩形的个数-nyoj206
  8. shiro权限验证标签
  9. html li标签前面添加图标三种方法
  10. Request 和 Response 区别
  11. NumPy学习笔记 二
  12. MAMP显示文件列表
  13. Raptor井字棋游戏
  14. 「汇编」加深理解段地址*10H(*16)必须是16的倍数
  15. 如何解决failed to push some refs to git
  16. Android OkHttp Get请求方式
  17. 内存问题-JVM调优思路
  18. $.each遍历实现延时
  19. Centos6.5安装中文支持和中文输入法
  20. Centos下命令行编译MapReduce代码(Java)并打包在Hadoop中执行

热门文章

  1. Docker的Etcd项目
  2. Python3 错误和异常
  3. CRM客户关系管理系统(八)
  4. 解读Batch Normalization
  5. 安卓 LayoutInflater参数作用
  6. move_uploaded_file的failed to open stream错误处理
  7. 利用QrCode.Net生成二维码 asp.net mvc c#
  8. Cassandra 3.x官方文档(1)---关于Cassandra
  9. springMVC源码分析--HandlerAdapter(一)
  10. FORM开发之说明性弹性域开发