【发布时间】:2016-09-05 09:04:50
【问题描述】:
我正在尝试在没有 Dagger 的情况下实现 MVP(出于学习目的)。但我遇到了问题 - 我使用存储库模式从缓存(共享首选项)或网络获取原始数据:
Shared Prefs|
|<->Repository<->Model<->Presenter<->View
Network|
但是为了让我的手放在共享首选项上,我必须放在某个地方,比如
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;
}
//...
}
那么如何在没有 Dagger 的情况下在 MVP 中使用 Shared Preferences 并且不会导致 Presenter 依赖于上下文?
【问题讨论】:
标签: android dependency-injection dependencies sharedpreferences mvp