Android Activity 生命周期:OnPause / OnStop / OnRestart / OnDestroy
OnPause
当应用退到后台时触发。
适合做:持久化保存数据、释放大对象、释放蓝牙等硬件资源。
注意:
OnPause只是失去焦点,界面还可能部分可见(弹出对话框),不能在这里做重量级销毁操作。
protected override void OnPause()
{
base.OnPause();
// 保存数据、释放硬件
}Code language: JavaScript (javascript)
OnStop
Activity 已经完全对用户不可见时调用。
- 按返回键跳转、打开新的全屏页面盖住当前页面。
- 典型用途:取消/停止后台服务,释放资源。
protected override void OnStop()
{
base.OnStop();
// 停止服务、释放资源
}Code language: JavaScript (javascript)
OnRestart
Activity 处于停止状态,重新被激活时执行。
示例:从新闻详情页按返回键回到新闻列表页,详情页销毁,列表页触发OnRestart。
执行顺序:OnRestart() → OnStart()
触发该方法代表 Activity 实例对象还存活,没有被销毁。
protected override void OnRestart()
{
base.OnRestart();
}Code language: JavaScript (javascript)
OnDestroy
Activity 生命周期最后回调,销毁之后不会再执行任何生命周期方法。
和 OnStop 类似,主要用来做最终资源释放。
OnStop:页面看不见,但Activity对象还在内存,后续可OnRestart恢复OnDestroy:对象即将销毁回收,彻底结束
protected override void OnDestroy()
{
base.OnDestroy();
// 最终释放资源,注销广播、解绑
}Code language: JavaScript (javascript)
总结
打开页面:OnCreate → OnStart → OnResume
压入后台:OnPause → OnStop
从后台切回:OnRestart → OnStart → OnResume
关闭销毁:OnPause → OnStop → OnDestroy
Previous: Activity 之间 Intent 传值
Next: 表单控件