即使没有屏幕旋转,也要让 ViewModel 保持活动状态

Keep ViewModel alive even though there is no screen rotation

众所周知,在屏幕旋转时 activity 将被重新创建,如果我们遵循 MVP 或 MVVM 模式以保持 Presenter 或 ViewModel 处于活动状态(例如:避免对 WebAPI 的双重调用).问题是,如果根据业务要求我们没有屏幕旋转(只有纵向模式),我是否需要让我的 ViewModel 或 Presenter 保持活动状态?非常感谢。

简答:是的,你知道。

长答案: 方向更改是可能的配置更改事件之一,还有其他事件(如区域设置更改、硬件键盘 open/hide、屏幕尺寸更改(由于 enable/disable 拆分模式)等)。

此外,配置更改是 activity 重新创建的可能原因之一 - 它可以在 activity 处于后台时由系统重新创建 w/o 配置更改并且系统内存不足。您可以在启用 "Don't keep activities" 开发者选项的情况下进行模拟。