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():这个没有排队。

文章出处:https://blog.csdn.net/pangzaifei/article/details/70213731

附上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

 

 

个人项目txtreader:已经发布google play,http://blog.csdn.net/pangzaifei/article/details/52756777

有需要的可以联系

 

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值