しばらくの間、Roboguice を使用してきましたが、github のソース コードを見ると、通常は使用しない、または必要としない不必要なものがたくさん含まれているため、Guice だけで作業を開始することにしました。これの唯一の欠点は、Android コンテキストを挿入して自分で構成する必要があることです。そのため、最終的には次のようにします。
public class AndroidDemoApplication extends Application {
private static AndroidDemoApplication instance;
private static final Injector INJECTOR = Guice.createInjector(new AndroidDemoModule());
@Override
public void onCreate() {
super.onCreate();
instance = this;
}
public static Context getAppContext() {
return instance;
}
public static void injectMembers(final Object object) {
INJECTOR.injectMembers(object);
}
}
次に、AbstractModule を拡張するクラスで:
public class AndroidDemoModule extends AbstractModule {
@Override
protected void configure() {
bind(Context.class).toProvider(new Provider<Context>() {
@Override
public Context get() {
return AndroidDemoApplication.getAppContext();
}
});
// .in(Singleton.class);
}
}
それは良いアプローチですか?今のところ、sharedPreference インスタンスを作成してそれを操作するためにコンテキストが必要なセッション マネージャーなどで使用するコンテキストのみが必要です。
最後に: My Objects のみを注入し、Android に関連するものは何も注入したくない場合、Roboguice を Guice に置き換えるのは良い方法ですか? また、Roboguice よりも軽量で依存性の低いものを使用してください。結局、ダガーは似たようなことをしますよね?