Otto를 사용하여 방법은 다른 곳에서 직접 전화를 걸면 방법 만 가입합니다.

StackOverflow https://stackoverflow.com//questions/25004921

  •  20-12-2019
  •  | 
  •  

문제

가입 된 방법이 다른 곳에서 사용되지 않는 한 가입 메소드가 올바른 이벤트 유형의 게시물에 호출되지 않는 문제가 있습니다.

여기에 코드에 대한 관련 정보는 다음과 같습니다.

  • 내 수업 중 하나의 방법은 @Subscribe로 주석을 달았습니다.
  • 디버거를 사용하여 코드를 단계별로 스테이션함으로써 특정 상황에서 클래스에는 @Subscribe로 주석 된 방법이 없습니다.
  • 시간이 지시에있는 방법을 직접 전화하지 않으면 (런타임에 실제로 런타임에 실제로 호출 되더라도 문제가되지 않거나 실제로 runtime )이 작동하지 않습니다.
  • IDE (Android Studio)는 "방법이 사용되지 않음"
  • 를 알려줍니다.

나는 확실히 자신감이없는 코드 블록에서 그 방법을 불리지 않을 수 있지만, 이것은 분명히 끔찍한 연습이며,이 게시물 / 구독 패러다임의 목적을 물리 칠 수 있습니다.

또는 나는 그 방법을 정적으로 만들 수 있지만, 나는 그것의 내부에 멤버 변수를 사용하기 때문에 그렇지 않을 것이다.

Otto의 예는 비슷한 패턴을 사용 하더라도이 이유에 대한 해결책이 유사한 패턴을 사용합니다

도움이 되었습니까?

해결책

그것은 Proguard 문제였습니다.다음 줄을 추가하여 수정했습니다.

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top