当前位置:   article > 正文

Android关于EventBus报错解决方法its super classes have no public methods with the @Subscribe_android eventbus 在小米tv上报错

android eventbus 在小米tv上报错
关联EventBusRxBusandroidStudioAndroid
异常
Subscriber class xxx and its super classes have no public methods with the @Subscribe annotation
  • 1
分析

从源码上看,是因为没有注解,反射得到为空。在这里插入图片描述

我的代码里是这样写的:一个注册,一个反注册,发现报错,然后一些blog博主说是啥?R8压缩问题
在这里插入图片描述
之后我开始进行修改,有以下两种方案:

方案一

关闭R8压缩

minifyEnabled false
  • 1

但是这样会使得你的应用增大不少,比如你使用了某个第三方库时,应用中只使用了其中很小一部分,但打包时所有库代码都会保留在应用中。

方案二

添加相应的压缩/混淆规则,比如EventBus

-keepattributes *Annotation*
-keepclassmembers class * {
    @org.greenrobot.eventbus.Subscribe <methods>;
}
-keep enum org.greenrobot.eventbus.ThreadMode { *; }
 
# And if you use AsyncExecutor:
-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
    <init>(java.lang.Throwable);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

两种方案我都进行修改了,发现还是不行,之后感觉出来可能是没有@Subscribe 注解的原因,所以我进行了如下修改,添加了注解,测试过后发现还是不行,又在里面加了事件,才好使

在这里插入图片描述

如下,改到这里,程序才好使,没有报那个错误
在这里插入图片描述

总结

RxBus 要想使用,每个注册的地方都得搭配一个 监听的接受者,还必须要带上接收的事件才行。我在别的地方有监听的接收者还不行,当然 ,这个接收者的事件 可以是别的事件,但是必须要有接收者。真坑啊。。。必须要搭配使用,男女搭配,干活不累。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/251290
推荐阅读
相关标签
  

闽ICP备14008679号