EventBus的使用及 解决异常Subscriber ****has no public methods called **

最近才接触到EventBus这个组件,发现它真的很好用,正准备使用到项目中去。
EvenBus简化了应用程序内各组件间、组件与后台线程间的通信。比如请求网络,等网络返回时通过Handler或Broadcast通知UI,两个Fragment之间需要通过Listener通信,这些需求都可以通过EventBus实现。它的效果和Handler的效果大致相同,但是实现原理和使用方法是完全不同的,它是基于保存相应方法,然后通过反射机制来实现的。更多的使用和原理,请参考:[Android EventBus实战](http://blog.csdn.net/jdsjlzx/article/details/40856535) 和[EventBus使用详解(二)——EventBus使用进阶](http://blog.csdn.net/harvic880925/article/details/40787203) ,他们会教会你怎样去使用EventBus,网上还有更多的教程,可以去搜索学习。

它是一个开源框架,可以在github上下载到:
https://github.com/greenrobot/EventBus

下载来后它的目录结构如下:
这里写图片描述

我们要使用EventBus只需将EventBus这个文件夹拷贝到我们的项目中,这样在我们的工程中就会出现两个包:
这里写图片描述

最后是我在第一次使用时出现的一个异常,或许初学者也会遇到的异常:
Subscriber ****has no public methods called
我们分析下为什么?
我这里先给出原因,个那些急忙解决的人:是因为在我们的类里使用了EventBus.getDefualt().register(this)了,但是在这个类里却没有定义一个以 onEvent开头的、非静态的、public权限以及仅仅只有一个参数 的方法,也就是没有类似于:public void onEvent**(Object arg)这样的方法,导致出现了这个错误。

想要彻底知道为什么,请先查看EventBus的实现原理: Android EventBus源码解析 带

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值