您不一定必须使用任何架构模式来实现。虽然任何MVP / MVC都是分离,测试等方面的好东西,但是使您的Controller / Presenter / DAO成为一个应用范围的单例,通过整个应用程序的使用寿命来保持内存不是一个好主意。
主要的想法是使用带有setRetainInstance(true)的Fragment,它保护它不会在方向更改时被破坏,并将您的Observable存储在那里。以下是在Activity / Fragment onCreate中处理的方法
protected void onCreate(Bundle savedInstanceState) {
if (savedInstanceState == null) {
// first run, create observable
mInfoObservable = createInfoObservable();
// set Observable in retained fragment
RetainFragmentHelper.setObject(this, getSupportFragmentManager(), mInfoObservable);
} else {
// following runs, get observable from retained fragment
mInfoObservable = RetainFragmentHelper.getObjectOrNull(this, getSupportFragmentManager());
}
// subscribe
mInfoObservable.subscribe(...);
}
请记住,您的Observable必须缓存最后的值,一种方法是使用cache()运算符。