OTTOを使用して、メソッドは他の場所で直接呼び出す場合にのみ登録します。
質問
私は、加入しているメソッドが他の場所で使用されていない限り、私の加入メソッドの1つが正しいイベントタイプのポストで呼び出されない問題を抱えています。
これはコードに関するいくつかの関連情報です:
- 私のクラスの1つの方法に@subscribeが注釈されています。
- デバッガを使ってコードを踏むことによって、私の特定の状況下では、クラスに@subscribeを注釈付けしていないことがわかります。
- 私はある時点で(いつでも実際に実行時に呼び出されたとしても)他の場所で直接メソッドを呼び出しない限り、my post が機能しません。
- IDE(Android Studio)が「メソッドは使用されない」 であることを通知します。
私は確かに私が自信を持っているコードのブロックでメソッドを呼び出すことができますが、これは明らかにひどい練習であり、この記事/購読パラダイムの目的を破ります。
またはiメソッドを静的にすることができますが、その中にメンバー変数を使用するためではなく、むしろほとんどありません。
OTTOの例でも同様のパターンを使用していてもこれが発生している理由の解決策
解決
がプロバイアードの問題でした。次の行を追加して修正しました:
-keepclassmembers class ** {
@com.squareup.otto.Subscribe public *;
@com.squareup.otto.Produce public *;
}
. 所属していません StackOverflow