Intereting Posts
Как заблокировать всплывающее меню при нажатии на флажок Возврат входного потока из дескриптора файла пакета с использованием андроидов DownloadManager Как программно изменить тему панели приложений AppCompat v21? ActionBarSherlock: программно отображать / скрывать кнопки Action Item посредством вызова метода К сожалению, камера остановилась Ошибка «adb not installed» при попытке сделать снимок с помощью uiautomatorviewer Android – Предотвращение удаления данных приложения или файлов через параметр «Очистить данные» Поиск в Android: используйте таблицы FTS вместе с обычными таблицами DBite SQLite Как настроить avd-путь для Android-андроида? Отладка пользовательского вида в редакторе графических макетов ADT Значение { *; } В ProGuard Как добавить файлы расширения Android с помощью Qt Распознавание голоса в приложении для Android, которое всегда прослушивается Android LocationRequest: получить обратный вызов, когда истекает срок действия запроса Сделайте снимок с камерой и получите растровое изображение

Используя Otto, метод подписывается только в том случае, если я вызываю его непосредственно в другом месте

У меня проблема, когда один из моих подписанных методов не получает сообщение о столбце правильного типа события, если этот подписанный метод не используется (называется) в другом месте.

Вот некоторая релевантная информация о коде:

  • Метод одного из моих классов аннотируется с помощью @Subscribe.
  • Поступая через код с помощью отладчика, я обнаружил, что под моими конкретными обстоятельствами класс не имеет методов, аннотированных с помощью @Subscribe.
  • Если я не вызову метод непосредственно в какой-то момент времени (не имеет значения, когда или даже если он действительно вызван во время выполнения) в другом месте, мой пост не работает.
  • IDE (Android Studio) уведомляет меня о том, что «метод никогда не используется»

Я могу, конечно, назвать метод в блоке кода, который, я уверен, никогда не выстрелит, но это, очевидно, ужасная практика, и побеждает цель этой парадигмы post / subscribe.

Или я могу сделать метод статическим, но я бы предпочел не потому, что я использовал переменные-члены внутри него.

Любые решения, почему это происходит, хотя пример Отто использует аналогичный шаблон

Оказывается, это была проблема ProGuard. Исправлено, добавив следующие строки:

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