Skip to content
阅读进度

如何理解生命周期、进程重建与状态恢复? ​

返回 性能与稳定性 目录

标准回答 ​

Activity 重建可能由配置变化引起,也可能发生在进程被系统回收后的重新进入。ViewModel 可以跨常见配置重建保存状态,但不能被当作进程死亡后的持久化存储。小型可恢复 UI 状态可使用适当的状态保存机制,业务事实应有持久化来源。

页面订阅、后台请求和动画需要绑定明确生命周期。销毁时解除监听和取消无用工作,回调到达时仍检查页面版本。取消无法保证已经发出的远端副作用不存在,因此服务端写入仍要有幂等语义。

多屏环境下尤其要区分业务会话生命周期与某个 Activity 实例的生命周期。页面重建不应重复创建共享会话,也不应因旧页面销毁误关新页面正在使用的资源。

追问与回答 ​

为什么旋转后出现重复请求 ​

初始化订阅与页面重建耦合,缺少共享状态或幂等策略。确认应恢复已有工作还是发起新请求。

保存所有对象到 Bundle 是否更简单 ​

会引入大小、序列化和版本问题;保存稳定 ID 与必要的小状态,重建时从权威数据源恢复更清晰。

易混淆点 ​

  • 认为 ViewModel 能在任意进程死亡后保留内存对象。

参考资料 ​

内容来源 ​

用完整回答理解机制,用真实证据解释项目。