Pregunta

Tengo un problema en el que uno de mis métodos suscritos suscritos no se convierte en una publicación del tipo de evento correcto a menos que se use el método suscrito (llamado) en otro lugar.

Aquí hay alguna información relevante sobre el código:

  • Un método de una de mis clases es anotado con @subscribe.
  • Al pasar por el código con el depurador, lo encuentro bajo mi circunstancia específica, la clase no tiene métodos anotados con @subscribe.
  • a menos que llame al método directamente en algún momento (no importa cuándo, o incluso si realmente se llama tiempo de ejecución) en otro lugar, mi post no funciona.
  • El IDE (estudio Android) me notifica que el "método nunca se usa"

Sin duda, puedo llamar al método en un bloque de código que confío en que nunca disparará, pero esto es obviamente una práctica terrible, y derrota el propósito de este paradigma posterior a la publicación / suscribirse.

o puedo hacer el método estático, pero preferiría no porque uso variables miembros dentro de ella.

Cualquier soluciones para por qué esto ocurra a pesar de que el ejemplo de Otto usa un patrón similar

¿Fue útil?

Solución

Resulta que fue un problema de ProGuard.Se lo arregló agregando las siguientes líneas:

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top