Ⅰ eventbus中registerSticky怎么报错说没有定义是不是eventbus3.0版本太低最好有大神提供可用链接。
http://blog.sina.com.cn/s/blog_1595b076b0102wf2e.html
好久以前写的,写的不太好,凑合着看吧,打算换另一个博客了
我写的功能是:
在MainActivity里面注册事件
点击MainActivity的Button,进入Second
Second里面还有一个Button,点击后,发布事件
最后调用Toast
Ⅱ eventbusexception是什么错
你看EventBus注册的时候是不是在主进程里面,EventBus底层是handler,只能在主进程工作,否则就会报错,注意是进程,不是线程,线程可以正常工作,看看有没有用到aidl之类的..
Ⅲ eventbus为什么我只post一次却接受到很多次
方法/步骤 1,点击启动AndroidStudio,启动后的界面如图所示。 2,复制你需要添加的jar,并将其黏贴到app— —src— —main— —libs文件夹下,可运行的AndroidStudio项目都有像这样的目录结构。可以看到虽然jar已经复制黏贴过来了,但是还未导入,所。
Ⅳ Android中使用事件总线的优缺点分别是什么
Android中使用事件总线Eventbus的优缺点如下:
1.Android EventBus事件总线是一个Android平台轻量级的事件总线框架, 它简化了Activity、Fragment、Service等组件之间的交互,很大程度上降低了它们之间的耦合,使得代码更加简洁,耦合性更低,提升代码质量。
2.AndroidEventBus使用注解来标识接收函数,这样函数名不受限制。
3.缺点是要实现上述订阅/发布模型的功能,付出的代价就是对各个注册Bus的类进行反射。如果大量的使用的情况下,对应用的性能多少有点副影响。
AndroidEventBus类似于观察者模式,通过register函数将需要订阅事件的对象注册到事件总线中,然后根据@Subcriber注解来查找对象中的订阅方法,并且将这些订阅方法和订阅对象存储在map中。当用户在某个地方发布一个事件时,事件总线根据事件的参数类型和tag找到对应的订阅者对象,最后执行订阅者对象中的方法。这些订阅方法会执行在用户指定的线程模型中,比如mode=ThreadMode.ASYNC则表示该订阅方法执行在子线程中
Ⅳ eventbus粘性时间和普通事件的区别
3与2主要区别在代码使用简化和性能更快上。详细如下:EventBus 2.x 必须定义以onEvent开头的几个方法,代码中语境比较突兀,且有可能会导致拼写错误,例如数据同步事件
EventBus 3.0 函数名字不再受到权限,而且可以在一个函数中体现出在哪个线程执行,并且可指定接收事件的优先级
EventBus 2.x 注册方式也比较繁琐。EventBus 3.0 注册方式只有一个
EventBus 2.x 是采用反射的方式对整个注册的类的所有方法进行扫描来完成注册,当然会有性能上的影响。EventBus 3.0中EventBus提供了EventBusAnnotationProcessor注解处理器来在编译期通过读取@Subscribe()注解并解析、处理其中所包含的信息,然后生成java类来保存所有订阅者关于订阅的信息,这样就比在运行时使用反射来获得这些订阅者的信息速度要快
Ⅵ 如何消除间接呼叫 Method 在 Android Studio 中的编译警告
如果有使用过 DI (Dependency Injection) Framework 像是 butterknife,或是 Bus 一类的 Framework 像是 Otto 或 EventBus,一定会撰写出 Method 是没有被自己开发的源代码直接呼叫的。这时在 Android Studio 的即时编译检查就会出现警告:
Method ‘...’ is never used
就像这篇文章里提到,警告的出现会形成一定程度上的困扰,最好是能够消除掉,毕竟这是一个无法避免的写法,但又不应该被看成是个问题。
照“调整 Android Studio 编译检查规则”中的方法把检查规则整个取消掉,是个一劳永逸的方法。但是也把其可能的错误也抑制掉了,徒增程序质量上的风险,并非上策。
另外一个可行的选项是在方法上宣告 SuppressWarnings 的 Annotation,像是 @SuppressWarnings("unused")、@SuppressWarnings({"UnusedDeclaration"})、@SuppressWarnings({"UnusedParameters”})。跟前一个方案一样,应该显示的警告也同时被遮蔽掉了,不是最佳的方式。
所幸 Android Studio 也不是没有提供对策,在有问题的源代码上按下“alt+enter”,会跳出 Menu 并可以选择 Suppress for methods annotated by ‘...’ 项目。以 greenrobot 的 EventBus 为例,所有以 org.greenrobot.eventbus.Subscribe 为 Annotation 的 Method 都不会再显示警告,所以问题顺利地解决了。
以上的解决方法应该已经很多人都知道了,只是还有一个衍生的问题。如果使用的 Framework 提供的 Annotation 不只一个,还是得要一个一个地重覆相同的动作,不能一次搞定吗?
这时可以开启“调整 Android Studio 编译检查规则”中提到的 Inspections 选项画面,切换到“Java->Declaration rendancy->Unused declaration”项目。画面右方的 Options Frame 最下方有一个【Configure annotations...】的按钮,点下去之后会再跳出另一个小视窗。接着就可以在视窗的最下方新增【Add Annotation Class】或【Add Annotations Pattern】,前一个是新增单一个 Class,另一个则是使用万用字符来增加一整组的 Class。
以上说明的这些资讯都被存在 .idea/misc.xml 的文件中,打开后会看到类似以下的内容:
<component name="EntryPointsManager">
<entry_points version="2.0" />
<list size="1">
<item index="0" class="java.lang.String" itemvalue="org.greenrobot.eventbus.Subscribe" />
</list>
</component>
如果你有莫名的控制欲,想要凡事都掌握在手中,可以直接修改文件的内容,也会达到一样的效果。