¿Cómo usar las preferencias compartidas en MVP sin Dagger y no hacer que Presenter sea dependiente del contexto?
Estoy tratando de implementar MVP sin Dagger (con fines de aprendizaje). Pero llegué al problema: uso el patrón de repositorio para obtener datos en bruto, ya sea de caché (Preferencias compartidas) o de la red:
Shared Prefs|
|<->Repository<->Model<->Presenter<->View
Network|
Pero para poner mis manos en Preferencias compartidas tengo que poner una línea como
presenter = new Presenter(getApplicationContext());
yo sueloonRetainCustomNonConfigurationInstance
/getLastCustomNonConfigurationInstance
emparejar para mantener el presentador "retenido".
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;
}
//...
}
Entonces, ¿cómo usar las preferencias compartidas en MVP sin Dagger y no hacer que Presenter sea dependiente del contexto?