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

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

  • 我的一个类的方法是用@subscribe的注释。
  • 通过使用调试器逐步踩到代码,我发现在我的特定情况下,该类没有使用@subscribe注释的方法。
  • 除非我在某个时间点直接调用方法(无关紧要,否则,甚至在运行时在运行时调用),否则我的 post 不起作用。
  • IDE(Android Studio)通知给我“从未使用过的方法”

我当然可以在一块代码中调用该方法,即我有信心永远不会火,但这显然是可怕的实践,并击败了这个帖子/订阅范式的目的。

或者我可以使方法静态,但我宁愿不是因为我在它里面使用成员变量。

即使osto的示例使用类似的模式

有帮助吗?

解决方案

证明它是一个proguard问题。通过添加以下行来修复它:

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top