Я пытаюсь реализовать MVP без кинжала (для обучения). Но я столкнулся с проблемой - я использую PEST-репозиторий для получения необработанных данных либо из кеша (Shared Preferences), либо из сети:
Shared Prefs|
|<->Repository<->Model<->Presenter<->View
Network|
Но для того, чтобы пожертвовать Shared Preferences, мне нужно поставить какую-то строку, например
presenter = new Presenter(getApplicationContext());
Я использую пару onRetainCustomNonConfigurationInstance
/getLastCustomNonConfigurationInstance
, чтобы сохранить Presenter "сохраненным".
public class MyActivity extends AppCompatActivity implements MvpView {
@Override
protected void onCreate(Bundle savedInstanceState) {
//...
presenter = (MvpPresenter) getLastCustomNonConfigurationInstance();
if(null == presenter){
presenter = new Presenter(getApplicationContext());
}
presenter.attachView(this);
}
@Override
public Object onRetainCustomNonConfigurationInstance() {
return presenter;
}
//...
}
Как использовать общие настройки в MVP без кинжала и не заставлять Presenter быть зависимым от контекста?