@ContextSingleton
コンテキストへの注入に依存するシングルトンをマークするために使用しています。Application
しかし、RoboGuice のソースと私自身のテストを見ると、コンテキストと異なるアクティビティ コンテキストとの間に違いがあるように見えます。これは完全に理にかなっていますが、少なくとも私にとっては、次のようなイベント管理機能と一緒に使用すると問題が発生するということだけです。
@ContextSingleton
public class Service {
@Inject
private Context context;
public void doSomething(@Observes MyEvent ev) {
...
}
}
サービスはシングルトンとして定義されていますが、明らかに遅延読み込みによって最初にどこかに注入されるまで、そのインスタンスは作成されないようです。したがって、 aMyEvent
を起動しても、リスナーは呼び出されません。次に、アプリケーションで事前にクラスを「手動で」eager-load できると考えました。
RoboGuice.get(context).getInstance(Service.class);
したがって、リスナーを登録しますが、これは後でイベントを発生させるために を注入したアクティビティ内でEventManager
実行された場合にのみ適切に機能しましたが、アプリケーションでは機能しませんでした。
したがって、理想的な世界では、次のように、シングルトンをどのコンテキストにバインドする必要があるかを RoboGuice に伝えることができると期待しています。
@ContextSingleton(MyApplication.class)
public class Service {
...
}
しかし、明らかにこれは不可能です。
私は何が欠けていますか?