EventBus简单应用和简单分析(附demo)

貌似最近EventBus挺火,自己找了找资料,然后看了看,写了个简单demo。供大家参考。

EventBus项目中没有用到,我也是自己看一些资料,所以东西相对简单,见谅。一些高级功能,也只能靠大家自行摸索了。

一:首先说一下我觉得EventBus几个重要的点吧。

1.这个类似广播需要你将EventBus register和unregister

一般在onCreate()中注册,在onDestory()中注册。为什么要注册?

当你register()之后,他会遍历你的.class文件,找到几个重要的onEvent开头的方法

(onEventMainThread()、onEventPostThread()、onEventBackgroundThrad()、onEventAsync())后面会介绍这几这onEvent开头的方法。

2.注册完之后,比如在子线程中执行一个耗时的操作,当完成之后,需要更新界面。这时不需要handler可以这样.

2.1调用EventBus.getDefault.post(参数);

这个参数,是你需要传递的数据,比如是一个list.

2.2在你的类中添加方法

public void onEventMainThread(参数){

//比如listView更新

//listview.setadapter(参数);

}

这里的参数,就是你之前EventBus.getDefault.post(参数)中的参数,如果类型不同,那么就会找不到onEventMainThread(参数),从而无法更新。

为什么呢?

之前说过,当你register()注册的时候,他会遍历你的类然后找出onEvent开头的方法,他会把这些方法放到一个map集合中,当你调用EventBus.getDefault.post(参数)它就会去map中找制定的onEvent开头的方法.

3.当你使用完,记得调用EventBus.getDefault..unregister(context);来注销

二:说一下这几个onEvent开头的方法。

这些方法并不是重写的,而是需要你写出来的方法.所以一定要仔细。

onEventMainThread():UI线程,不多说,更新界面什么的就在这里面。

onEventPostThread():谁调用的EventBus.getDefault().post(参数)这个时候的线程,那么onEventPostThread()就代表那个线程,同ui对比,就一目了然了。

onEventBackgroundThrad():这里面有线程池,可以排队。

onEventAsync():这个没有排队。

附上EventBus的机制(英文)

我写个大白话解释吧,我(publisher)想让eventBus工作,就调用Event.getDefault().post()

eventBus接收到你的信息,他会找对应的onEvent()就是(Subscriber).

EventBus...

  • simplifies the communication between components

    • decouples event senders and receivers
    • performs well with Activities, Fragments, and background threads
    • avoids complex and error-prone dependencies and life cycle issues
  • makes your code simpler
  • is fast
  • is tiny (<50k jar)
  • is proven in practice by apps with 100,000,000+ installs
  • has advanced features like delivery threads, subscriber priorities, etc.

demo源码下载

如果想深入了解一些的,可以参考这个哥们的blog。

http://blog.csdn.net/lmj623565791/article/details/40920453

时间: 2024-12-30 00:02:32

EventBus简单应用和简单分析(附demo)的相关文章

基于socket的客户端和服务端聊天简单使用 附Demo

功能使用 服务端 分离一个不停接受客户端请求的线程 接受不客户端请求的线程中,再分离就收消息的线程 几大对象分别是 IPEndPoint IP终结点 服务端Socket,绑定终结点Bind,启动监听Listen(100) 100代表的监听请求队列的长度 接受请求的客户端Socket,接受消息 Receive 接受的字节与文本间的互转 客户端 只有一个分离接受服务端发送消息的线程 几大对象 客户端Socket 客户端连接Connect 客户端发送 客户端接受 接受的字节与文本间的互转 附Demo下

java爬取网页内容 简单例子(2)——附jsoup的select用法详解

http://www.cnblogs.com/xiaoMzjm/p/3899366.html [背景] 在上一篇博文java爬取网页内容 简单例子(1)——使用正则表达式 里面,介绍了如何使用正则表达式去解析网页的内容,虽然该正则表达式比较通用,但繁琐,代码量多,现实中想要想出一条简单的正则表达式 对于没有很好正则表达式基础的人——比如说我T_T——是一件蛮困难的事.这一篇,我们改用jsoup,一个强大的解析html工具,去解析html,你会发现,一切都变得很容易. [准备工作] 下载:jsou

从注册流程 分析如何安全退出多个Activity 多种方式(附DEMO)

前言 由于一个同学问到我如何按照一个流程走好之后回到首页,我以前看到过4个解决方案,后来发现有做个记录和总结的必要,就写了这篇博文.(之前看小强也写过一篇,这里通过自身的分析完整的总结一下以下6种方案,并加上一个DEMO便于大家了解大体流程) 在android的用户交互中,按钮触发的意图(Intent)跳转会为你重新打开新的一个界面活动(Activity),对于之前的界面根据需求进行摧毁(Finish())或则保留. 如果一个交互流程中,是从A开始,按照A - B - C - D - A这样的顺

用OSSIM简单实现分布式Netflow分析系统

用OSSIM简单实现分布式Netflow分析系统 若干要对网络异常流量进行分析,首先要深入了解其产生原理及特征,对异常流量的种类.流向.产生后果.数据包类型.地址.端口等多个方面进行分析.Linux下Netflow数据采集分析工具为Nfdump,通过Nfsen,以Web界面展示出来,然而如果让你完全通过之前编译安装的方式搭建Netflow采集分析平台确非常复杂. 以下三幅图展示了在OSSIM系统中实现分布式Netflow系统的截图. 如何轻松设置Netflow,大家请参考<开源安全运维平台OSS

一个简单的HTML病毒分析

一直就想写这篇东西了,只是上班时说要上班,不写,回家后又忙着玩游戏,丢一边去了.现在只好不务正业的开写了,希望头儿不会知道我的blog.哈哈 在很久之前就对HTML的病毒很感兴趣了,很好奇怎么能远程向本地不经过允许就能下载可执行文件的,只是一直没机会搞得到ASP的原码,所以不才敢断章取义的去作什么分析.最近一次听一朋友说他看一个网页时病毒防火墙提示有病毒,叫我小心(先感谢一下他先),我闪了一下念头,就打开FlashGet把那个病毒首页下了下来. 稍微看了一下发现在首页代码的下面几行里有一个隐含的

从注册流程 分析如何安全退出多个Activity 多种方式(附DEMO)

http://blog.csdn.net/vipzjyno1/article/details/25423543 前言 由于一个同学问到我如何按照一个流程走好之后回到首页,我以前看到过4个解决方案,后来发现有做个记录和总结的必要,就写了这篇博文.(之前看小强也写过一篇,这里通过自身的分析完整的总结一下以下6种方案,并加上一个DEMO便于大家了解大体流程) 在android的用户交互中,按钮触发的意图(Intent)跳转会为你重新打开新的一个界面活动(Activity),对于之前的界面根据需求进行摧

Android UI开发: 横向ListView(HorizontalListView)及一个简单相册的完整实现 (附源码下载)

Android UI开发: 横向ListView(HorizontalListView)及一个简单相册的完整实现 (附源码下载) POSTED ON 2014年6月27日 BY 天边的星星 本文内容: 1.横向ListView的所有实现思路; 2.其中一个最通用的思路HorizontalListView,并基于横向ListView开发一个简单的相册: 3.实现的横向ListView在点击.浏览时item背景会变色,并解决了listview里setSelected造成item的选择状态混乱的问题.

用批处理来自动化项目编译及部署(附Demo)

阅读目录 介绍 详细 处理 结论 Demo下载 介绍 一个项目从立项开始,可能就已经根据公司的配置模板将目录,文档结构定义出来.有动态库,也有静态库,在没有专门的CMO的时候,往往组长,若干开发人员承担版本发布的工作.次工作即枯燥,又容易出错,那么怎么样才能将这样的工作略微自动化点.以下就通过很简单的很古老的批处理来略微自动化下. 详细 一:目录结构 每个公司的目录结构不一样,当略有相同,比如:管理库,需求库,设计库,代码库,引用库(包库),资源库,编译模板库,编译版本库,发布版本库等.如下图:

初试Code First(附Demo)

初试Code First(附Demo) 写在前面 新建项目 安装EntityFramework程序包 创建模型 创建上下文DbContext 创建数据库.读/写数据 配置连接字符串 Code First 迁移 示例Demo下载 后记 以前逛园子的时候,很多大牛写的一些东西,什么AOP.DDD之类的,看过之后一头雾水,远望大牛,回过头看看自己,原来程序员的差距还可以这么大.每个程序员都有个大牛梦想,当然小菜我也是,只是还在开始的路上. 因为前几天研究easyui,准备写个mvc+ef+easyui