Question

J'ai un problème dans lequel l'une de mes méthodes souscrites n'est pas appelée à un poste de type d'événement correct, à moins que la méthode souscrits est utilisée (appelée) ailleurs.

Voici quelques informations pertinentes sur le code:

  • Une méthode d'une de mes classes est annotée avec @subscribe.
  • En entrant dans le code avec le débogueur, je constate que dans mes circonstances spécifiques, la classe n'a aucune méthode annotée avec @subscribe.
  • Sauf si j'appelle la méthode directement à un moment donné à un moment (peu importe quand, ou même si elle est appelée en réalité à l'exécution) ailleurs, mon Post ne fonctionne pas.
  • L'IDE (Android Studio) m'indique que la "méthode n'est jamais utilisée"

Je peux certainement appeler la méthode dans un bloc de code que je suis confiant ne tiendra jamais, mais c'est évidemment terrible pratique et vaincre le but de ce paradigme post / abonnement.

ou je peux faire la méthode statique, mais je préférerais pas parce que j'utilise les variables des membres à l'intérieur de celui-ci.

Toute solution pour laquelle cela se produit même si l'exemple d'Otto utilise un modèle similaire

Était-ce utile?

La solution

s'avère que c'était un problème de proguard.Corrigé en ajoutant les lignes suivantes:

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top