使用Otto,方法只有在我直接在其他地方调用它时才会订阅

Tee*_*aps 3 java android proguard otto

我有一个问题,我的订阅方法之一不会被调用正确的事件类型的帖子,除非在其他地方使用(调用)订阅方法.

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

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

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

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

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

Tee*_*aps 7

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

-keepclassmembers class ** {
    @com.squareup.otto.Subscribe public *;
    @com.squareup.otto.Produce public *;
}
Run Code Online (Sandbox Code Playgroud)