gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 12:18:28 25 4
gpt4 key购买 nike

我遇到一个问题,我的一个订阅方法没有在正确事件类型的帖子上被调用,除非在别处使用(调用)该订阅方法。

这里是一些关于代码的相关信息:

  • 我的一个类的方法用@Subscribe 注释。
  • 通过使用调试器单步执行代码,我发现在我的特定情况下,该类没有使用@Subscribe 注释的方法。
  • 除非我在其他地方的某个时间点直接调用该方法(无论何时,或者即使它实际上在运行时被调用),我的帖子也不起作用。
  • IDE (Android Studio) 通知我“方法从未被使用”

我当然可以在我确信永远不会触发的代码块中调用该方法,但这显然是一种糟糕的做法,并且违背了这种发布/订阅范式的目的。

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

尽管 Otto 的示例使用了类似的模式,但为什么会出现这种情况的任何解决方案

最佳答案

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

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

关于java - 使用 Otto,方法只有在我在其他地方直接调用它时才会订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25004921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com