Activity生命周期在四种启动模式下的运行流程

Demo中有MainActivity、Main2Activity、Main3Activity、Main4Activity四个Activity,主要是通过改变Main2Activity的启动模来观察不同模式下,Activity各个生命周期的运行流程

一、Standard

standard( 标准模式 ):每次启动一个Activity都会重新创建一个新的实例,不管这个实例是否存在,并且它会进入启动者所在的栈中。

MainActivity启动

MainActivity::onCreate::TaskId::1358
MainActivity::onContentChanged::TaskId::1358
MainActivity::onStart::TaskId::1358
MainActivity::onPostCreate::TaskId::1358
MainActivity::onResume::TaskId::1358
MainActivity::onPostResume::TaskId::1358
MainActivity::onAttachedToWindow::TaskId::1358
MainActivity::onCreateOptionsMenu::TaskId::1358
MainActivity::onPrepareOptionsMenu::TaskId::1358

MainActivity启动Main2Activity

MainActivity::onUserInteraction::TaskId::1358
MainActivity::onUserInteraction::TaskId::1358
MainActivity::onPause::TaskId::1358

Main2Activity::onCreate
Main2Activity::onStart
Main2Activity::onPostCreate
Main2Activity::onResume
Main2Activity::onPostResume
Main2Activity::onAttachedToWindow

MainActivity::onStop::TaskId::1358
MainActivity::onSaveInstanceState::TaskId::1358

Main2Activity点击返回键

Main2Activity::onPause
MainActivity::onRestart::TaskId::194
MainActivity::onStart::TaskId::194
MainActivity::onResume::TaskId::194
MainActivity::onPostResume::TaskId::194
Main2Activity::onStop
Main2Activity::onDestroy
Main2Activity::onDetachedFromWindow

二、SingleTop

singleTop(栈顶复用模式): 如果新的Activity已经位于所在任务栈的顶部,则此Activity不会被重新创建 ,若已存在但不在栈顶,则仍然会重新创建;

MainActivity启动

与standard相同

MainActivity启动Main2Activity

与standard相同

Main2Activity启动Main2Activity

Main2Activity::onPause
//只要不创建新的实例,就会调用onNewIntent方法
Main2Activity::onNewIntent
Main2Activity::onResume
Main2Activity::onPostResume

三、singleTask

singleTask(栈内复用模式): 只要Activity在一个栈已经存在,那么多次启动此Activity都不会重新创建实例。

MainActivity启动

与standard相同

MainActivity启动Main2Activity

与standard相同

Main2Activity启动Main3Activity

Main2Activity::onPause

Main3Activity::onCreate
Main3Activity::onStart
Main3Activity::onPostCreate
Main3Activity::onResume
Main3Activity::onPostResume
Main3Activity::onAttachedToWindow

Main2Activity::onStop
Main2Activity::onSaveInstanceState

Main3Activity启动Main4Activity

Main3Activity::onUserInteraction
Main3Activity::onUserInteraction
Main3Activity::onPause
Main4Activity::onCreate
Main4Activity::onStart
Main4Activity::onPostCreate
Main4Activity::onResume
Main4Activity::onPostResume
Main4Activity::onAttachedToWindow
Main3Activity::onStop
Main3Activity::onSaveInstanceState

Main4Activity启动Main2Activity

Main4Activity::onUserInteraction

Main3Activity::onDestroy
Main3Activity::onDetachedFromWindow

Main4Activity::onPause

Main2Activity::onRestart
Main2Activity::onStart
Main2Activity::onNewIntent
Main2Activity::onResume
Main2Activity::onPostResume

Main4Activity::onStop
Main4Activity::onDestroy
Main4Activity::onDetachedFromWindow

四、singleInstance

singleInstance(单实例模式): 这是一种加强的singleTask模式,当该Activity启动后,系统会为该Acitivty创建一个新的栈,然后改Acitivty会独立地在这个栈内,但由于栈内复用特性,后续的请求均不会创建新的栈,除非这个独立的栈被系统销毁。

MainActivity启动

与standard相同

MainActivity启动Main2Activity

与standard相同

Main2Activity启动Main3Activity

Main2Activity::onPause

Main3Activity::onCreate
Main3Activity::onStart
Main3Activity::onPostCreate
Main3Activity::onResume
Main3Activity::onPostResume
Main3Activity::onAttachedToWindow

Main2Activity::onStop
Main2Activity::onSaveInstanceState

Main3Activity启动Main4Activity

Main3Activity::onUserInteraction
Main3Activity::onUserInteraction
Main3Activity::onPause

Main4Activity::onCreate
Main4Activity::onStart
Main4Activity::onPostCreate
Main4Activity::onResume
Main4Activity::onPostResume
Main4Activity::onAttachedToWindow

Main3Activity::onStop
Main3Activity::onSaveInstanceState

Main4Activity开启Main2Activity

Main4Activity::onUserInteraction

Main3Activity::onDestroy
Main3Activity::onDetachedFromWindow

Main4Activity::onPause

Main2Activity::onRestart
Main2Activity::onStart
Main2Activity::onNewIntent
Main2Activity::onResume
Main2Activity::onPostResume

Main4Activity::onStop
Main4Activity::onDestroy
Main4Activity::onDetachedFromWindow

注意事项

onNewIntent:Activity没有创建新的实例的时候使用

onSaveInstanceState:开启新的Activity时会被调用;发生异常时会被调用;切换到后台时会被调用;屏幕旋转的时候会被调用;

旋转屏幕时生命周期的方法


MainActivity::onPause
MainActivity::onStop
MainActivity::onSaveInstanceState
MainActivity::onDestroy
MainActivity::onDetachedFromWindow

MainActivity::onCreate
MainActivity::onContentChanged
MainActivity::onStart
MainActivity::onRestoreInstanceState
MainActivity::onPostCreate
MainActivity::onResume
MainActivity::onPostResume
MainActivity::onAttachedToWindow
MainActivity::onCreateOptionsMenu
MainActivity::onPrepareOptionsMenu

项目源码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值