加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 使用Otto,如果我直接在其他地方调用它,方法只会订阅

发布时间:2020-12-15 04:21:28 所属栏目:Java 来源:网络整理
导读:我有一个问题,我的订阅方法之一不会被调用正确的事件类型的帖子,除非在其他地方使用(调用)订阅方法. 以下是有关代码的一些相关信息: 我的一个类的方法用@Subscribe注释. 通过使用调试器逐步执行代码,我发现在我的特定情况下,该类没有使用@Subscribe注释的方
我有一个问题,我的订阅方法之一不会被调用正确的事件类型的帖子,除非在其他地方使用(调用)订阅方法.

以下是有关代码的一些相关信息:

>我的一个类的方法用@Subscribe注释.
>通过使用调试器逐步执行代码,我发现在我的特定情况下,该类没有使用@Subscribe注释的方法.
>除非我在某个时间点直接调用该方法(无论何时,或者甚至在运行时实际调用它),我的帖子都不起作用.
> IDE(Android Studio)通知我“方法永远不会被使用”

我当然可以在一段代码中调用该方法,我相信它永远不会解雇,但这显然是一种可怕的做法,并且违背了这个帖子/订阅范例的目的.

或者我可以使方法静态,但我宁愿不这样做,因为我在其中使用成员变量.

尽管奥托的例子使用了类似的模式,但为什么会发生这种情况的任何解决方案

解决方法

原来这是一个ProGuard问题.通过添加以下行来修复它:

-keepclassmembers class ** {
    @com.squareup.otto.Subscribe public *;
    @com.squareup.otto.Produce public *;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读