Я использую 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 и игры с ним.
Наконец: это хороший подход к замене Roboguice на Guice, когда я хочу вводить только свои объекты, а не что-либо, связанное с Android, только контекст? И используйте что-то более легкое и менее зависимое, чем Roboguice. В конце концов, Dagger делает что-то подобное, верно?