使用Otto,仅在其他地方直接调用它
题
我有一个问题,其中我的订阅方法没有在正确的事件类型的帖子上被调用,除非使用(调用)其他地方的订阅方法。
以下是关于代码的一些相关信息:
- 我的一个类的方法是用@subscribe的注释。
- 通过使用调试器逐步踩到代码,我发现在我的特定情况下,该类没有使用@subscribe注释的方法。
- 除非我在某个时间点直接调用方法(无关紧要,否则,甚至在运行时在运行时调用),否则我的 post 不起作用。
- IDE(Android Studio)通知给我“从未使用过的方法”
我当然可以在一块代码中调用该方法,即我有信心永远不会火,但这显然是可怕的实践,并击败了这个帖子/订阅范式的目的。
或者我可以使方法静态,但我宁愿不是因为我在它里面使用成员变量。
即使osto的示例使用类似的模式
解决方案
证明它是一个proguard问题。通过添加以下行来修复它:
-keepclassmembers class ** {
@com.squareup.otto.Subscribe public *;
@com.squareup.otto.Produce public *;
}
. 不隶属于 StackOverflow