外观
如何理解生命周期、进程重建与状态恢复?
标准回答
Activity 重建可能由配置变化引起,也可能发生在进程被系统回收后的重新进入。ViewModel 可以跨常见配置重建保存状态,但不能被当作进程死亡后的持久化存储。小型可恢复 UI 状态可使用适当的状态保存机制,业务事实应有持久化来源。
页面订阅、后台请求和动画需要绑定明确生命周期。销毁时解除监听和取消无用工作,回调到达时仍检查页面版本。取消无法保证已经发出的远端副作用不存在,因此服务端写入仍要有幂等语义。
多屏环境下尤其要区分业务会话生命周期与某个 Activity 实例的生命周期。页面重建不应重复创建共享会话,也不应因旧页面销毁误关新页面正在使用的资源。
追问与回答
为什么旋转后出现重复请求
初始化订阅与页面重建耦合,缺少共享状态或幂等策略。确认应恢复已有工作还是发起新请求。
保存所有对象到 Bundle 是否更简单
会引入大小、序列化和版本问题;保存稳定 ID 与必要的小状态,重建时从权威数据源恢复更清晰。
易混淆点
- 认为 ViewModel 能在任意进程死亡后保留内存对象。
参考资料
内容来源
- Android 与 AI 工程 Wiki · 原条目
q123