Обычно при использовании Dagger 2 и андроид я следующее:Разница между ничтожной Inject (активность деятельности) и SomeComponent getSomeComponent()
@Singleton
@Component(modules = {ApplicationModule.class})
public interface ApplicationComponent {
void inject(MainActivity activity);
}
public class MainActivity extends Activity {
@Inject SharedPreferences mSharedPrefs;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
((DemoApplication) getApplication())
.getComponent()
.inject(this);
}
}
Но в последнее время я видел это:
@Singleton
@Component(modules = {ApplicationModule.class})
public interface ApplicationComponent {
SharedPreferences getSharedPreferences();
}
public class MainActivity extends Activity {
SharedPreferences mSharedPrefs;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mSharedPrefs = ((DemoApplication) getApplication())
.getComponent().getSharedPreferences();
}
}
I пропустили класс DemoApplication и класс Module, они являются стандартными.
В чем разница между этими двумя подходами? Pro и Con тоже? Может быть, правильно или нет?
Связанный: [Что является целью неинжекционных методов в компонентах в кинжале 2] (https://stackoverflow.com/questions/41472319/what-is-the-purpose-of-the-non-inject -methods-in-components-in-dagger-2/41472320) –
Спасибо за это, я сделал поиск, но не нашел это –