Всем привет. Возник вопрос с которым не могу сам разобраться. Использую в андроид приложении Dagger 2. Есть компонент со своим scope
@Module
public class DocumentModule {
@Provides
@DocumentScope
public Document provideDocument(Context context, DocumentLines documentLines) {
return new Document(context, documentLines);
}
}
...
@Scope
@Retention(RetentionPolicy.RUNTIME)
public @interface DocumentScope {
}
...
@Component(dependencies = AppComponent.class, modules = {DocumentModule.class})
@DocumentScope
public interface DocumentComponent {
void inject(DocumentFragment documentFragment);
}
Данный компонент создаю во фрагменте (фрагментов несколько, используется ViewPager, на каждый фрагмент нужен свой инжектированный объект документа)
@Inject
public Document documents;
...
@Override
public void onCreate(Bundle savedInstanceState) {
DaggerDocumentComponent.builder().
appComponent(appComponent).
build().
inject(this);
}
Проблема возникает при восстановлении состояния активити, например при повороте экрана, или восстановлении приложения из фона, в данном случае инжектированный объект documents равен null. Объясните пожалуйста как управлять жизненным циклом scoped компонента, чтобы он не обнулялся при восстановлении активити/фрагмента?
appComponent и DocumentModule здесь не привожу, они в зависимостях у данного компонента и являются синглтонами, с ними вопросов нет.
Перечитал уже кучу материалов, посмотрел исходники нескольких проектов, не укладывается в голове как управлять такими компонентами. Мне получается нужно сохранить объект компонента в private переменную и сохранять/восстанавливать его на onSaveInstanceState/onRestoreInstanceState? Мне кажется что это не так и я чего то неправильно понимаю.
Заранее благодарю.