在实施MVP时,在Android中保留Presenters的最佳做法是什么?

时间:2016-04-05 18:07:47

标签: android android-fragments mvp

你是怎么做到的?配置更改时如何保留演示者?

另一个问题:是否可以在离开片段/活动时保留演示者?

我不介意使用MVP的框架,如Mosby或Nucleus,但我认为Mosby的方式并不是最好的方法。在片段中使用片段使用Fragment.setRetainInstance(true)不应该根据SO上的许多帖子使用,它也不应该与backstack一起使用。也许有更好的方法?

1 个答案:

答案 0 :(得分:2)

Nucleus内部使用静态Map。实际上,Nucleus会执行从演示者执行的Request(rxjava)到演示者实例的映射。这意味着nucleus不会保留Presenter实例,而是保留Request(RxJava)并将其重新附加到新的presenter实例。

Mosby 2.0使用保留片段或活动lastNonConfiguration方法来保留演示者。保留具有UI的片段没有任何问题。保留片段的唯一缺点是你不能把它们放在后面的堆栈上。 在Mosby 3.0中(SNAPSHOT可用,但后台上的片段尚未实现),所有演示者都将保存在绑定到托管活动生命周期的Map中。这意味着,Presenter可以保留在backstack上的非重新训练片段。与Nucleus相比,它们只与Activities生命周期一样长,或者由用户(导航)从backstack中移除。此外,这允许Mosby 3.0也支持自定义视图(FrameLayout等)。

is it possible to preserve Presenters when navigating away from Fragment/Activity?

是的,但为什么需要你呢?如果视图根本不可见,是否真的需要保留演示者?尽管如此,Nucleus和Mosby都能做到这一点。