外观
如何理解请详细描述 Activity 从创建到销毁的完整生命周期回调顺序及其触发场景?
标准回答
首次打开:onCreate → onStart → onResume。前台页面正常结束:onPause → onStop → onDestroy。返回已有实例是否经过 onRestart,取决于它之前是否已进入 Stopped。
**各阶段的触发场景:**onCreate 初始化新实例;onStart 进入可见阶段;onResume 进入 Resumed。离开 Resumed 会 onPause,完全不可见会 onStop,正常销毁实例会 onDestroy。
**从后台返回:**实例仍在且已 Stopped:onRestart → onStart → onResume;只是 Paused:回到 onResume;实例已不存在:重新走 onCreate → onStart → onResume。
**不能套用的情况:**系统直接终止进程不保证调用 onDestroy。上述是常见完整流程,回调不等于实际画面已呈现。
通俗例子
打开音乐页通常经过 onCreate、onStart、onResume;被别的页面完全盖住后经过 onPause、onStop。正常结束会调用 onDestroy,但进程被直接杀死不保证收到它。
深入解释
**回调通知什么:**onCreate 用来初始化一个 Activity 实例;onStart 表示进入可见阶段;onResume 表示进入可交互阶段。它们是状态通知,不是“屏幕已经显示这一帧”的测量点。
**退出时怎样变化:**被另一页面完全遮住,通常先 onPause 再 onStop;正常结束再 onDestroy。若系统直接结束整个进程,来不及执行销毁回调,所以重要数据不能只在 onDestroy 保存。
易混淆点
进程被直接杀死时,不能保证收到 onDestroy;生命周期回调也不是屏幕实际呈现的时间戳。
参考资料
内容来源
- Android · AI Agent 知识手册 · 原条目
1.1.1